[Java] 시작하기, 기본 타입

Local Gaji·2023년 8월 10일

이것이 자바다

목록 보기
1/18

🎈 기본 형식 : Hello world

/* Hello.java */

package 경로.하위경로;

public class Hello {
  // 클래스 블록
  // 클래스 명은 파일명과 같아야 함
  
  public static void main(String[] args) {
    // 메소드 블록
    System.out.println("Hello, java");
  }
}

🎈 변수 타입

  • 기본 타입
    • 정수 타입 : byte , char , short , int , long
    • 실수 타입 : float , double
    • 논리 타입 : boolean
  • 참조 타입
    • 문자열, 배열, 열거, 클래스, 인터페이스
    • 참조 타입 변수는 객체의 주소를 저장한다.

🎈 변수 선언

int x;            // 선언
x = 10;           // 대입
int y = 10;       // 변수 초기화
int z = x;        // 복사

🔰 정수

정수 타입은 5개가 있고 각 타입마다 차지하는 메모리 공간이 다르다.

타입메모리범위 : -n ~ n-1
byte1byte2^7
short2byte2^15
char2byte0 ~ 2^16 - 1
int4byte2^31
long8byte2^63

10진수 외 숫자 저장

int a = 0b1011;   // 2진수
int b = 013;      // 8진수
int c = 0x1A;     // 16진수

long 타입에서 값이 int 범위를 초과할 경우, 숫자 뒤에 L을 붙여준다.

long longVal = 1000000000000L;

🔰 정수 : 문자 char

유니코드 숫자 값을 저장하기 때문에 char 타입도 정수 타입에 속한다.

char a = 'A';     // 유니코드 65
char b = 65;      // A
char c = 0x0041;  // A
char d = '가';    // 유니코드 44032

char e = ' ';     // 빈 문자 대입 시 공백(32)으로 저장

문자를 직접 지정할수도 있고, 이때 문자를 작은 따옴표로 감싸야 한다.


🔰 실수

float 타입과 double 타입이 있다.
실수를 기본적으로 double 타입으로 해석하므로, float 타입은 숫자 뒤에 f 또는 F를 붙여줘야 한다.

실수를 부호 부분 / 지수 부분 / 가수 부분 으로 나누어 저장한다.


double a = 3.14;    // 15자리 소수까지 저장
float b = 3.14f;    //  7자리 소수까지 저장

// 10의 거듭제곱 리터럴
double c = 5e2;     
double d = 4e-2;    

🔰 Boolean

boolean a = true;         
boolean b = (a == true);   // true

🔰 문자열

큰 따옴표로 감싸야 한다

String var1 = "A";
String var2 = "ABC";
String var3 = """

🔰 변수 사용 범위

조건문, 반복문 사용 시 중괄호 블럭 내에서 선언된 변수는 중괄호 밖에서 사용할 수 없다.



🎈 타입 변환


🔰 자동 타입 변환

큰 타입 변수에 작은 타입 값이 대입될 때,
해당 값의 타입이 큰 타입으로 자동 변환된다

ex) 실수 타입에 정수 타입이 대입될 때, int 타입 값이 실수 타입으로 자동 변환된다.

int x = 100;
float var1 = x;   // 1.0E2f 로 저장
double var2 = x;  // 1.0E2  로 저장

문자의 경우, 유니코드 숫자 값이 int 로 바뀌어 저장된다.

char x = 'A';
int var = x;     // 65

🔰 강제 타입 변환

큰 타입 값을 작은 타입에 대입하고 싶을 때
타입 명을 값 앞에 괄호로 붙여준다.

int x = 10;
byte var = (byte) 10;

값이 커서 넘칠 경우 앞부분 bytes 들이 날아가고 값이 제대로 보존되지 않는다.

double pi = 3.14;
int intPi = (int) pi;  // 3

실수 -> 정수 대입 시 소수 부분은 버려지게 된다.


🔰 문자열 ↔ 숫자 변환

  • 문자열 → 숫자 : 숫자 타입 객체의 parse 메서드를 이용한다.
String str = "1000";

int intVal = Integer.parseInt(str);
long longVal = Long.parseInt(str);
float val = Float.parseFloate(str)
  • 숫자 → 문자열 : String.ValueOf()
String str = String.valueOf(10);   // "10"

🎈 연산 시 타입 변환


🔰 연산 시 자동 타입 변환

피연산자가 정수 타입이면 연산의 결과는 int
피연산자가 정수 타입이고 그중 long 타입이 있으면 결과는 long
피연산자 중 하나가 실수이면 연산의 결과는 실수 타입


int x = 10;
double y = 0.1;
double result = x + y = 10.1  // 10이 10.0으로 자동 변환됨

🔰 오버플로우, 언더플로우

정수 타입 연산에서 오버플로우가 발생하면 결과값은 해당 정수타입의 최솟값이 된다.
언더플로우가 발생하면 결과값은 해당 정수타입의 최댓값이 된다.

byte a = 127;
a++;                // -128

byte x = -128;
x--;                // 127

🎈 값 입력받기

  1. Scanner 객체를 생성한다
  2. nextLine() 메서드를 이용해서 입력받은 값을 변수에 저장한다.
Scanner scanner = new Scanner(System.in);   // 생성

System.out.print("값을 입력하세요 : ")
String data = scanner.nextLine();           // 저장

0개의 댓글