변수는 데이터를 저장하기 위한 메모리 공간을 의미합니다. 변수는 프로그램 실행 중에 값이 변할 수 있으며, 각 변수는 고유한 이름(변수명)을 가집니다. 변수는 특정 데이터 타입에 맞는 값을 저장할 수 있도록 선언됩니다.
int number = 10; String text = "Hello, World!";
위 예제에서 number는 정수형(int) 변수를 의미하며, text는 문자열(String) 변수를 의미합니다.
자바의 자료형은 크게 기본 자료형(Primitive Data Type)과 참조 자료형(Reference Data Type)으로 나눌 수 있습니다.
byte: 1바이트 (8비트), -128 ~ 127short: 2바이트 (16비트), -32,768 ~ 32,767int: 4바이트 (32비트), -2,147,483,648 ~ 2,147,483,647long: 8바이트 (64비트), -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807//정수형 byte by = 1; //만약 by > 127이라면 오류! short sh = 2; int in = 3; long lo = 4; System.out.println(by + ", " + sh + ", " + in + ", " + lo);//결과 1, 2, 3, 4
실수형
float: 4바이트 (32비트), 단정도 부동소수점double: 8바이트 (64비트), 배정도 부동소수점//실수형 float f1 = 3.14f; //float의 경우 소수 자료형의 기본형이 double이기 때문에 끝에 f를 붙인다 double dou = 3.141592; System.out.println(f1 + ", " + dou);//결과 3.14, 3.141592
문자형
char: 2바이트 (16비트), 유니코드 문자//문자형 char ch1 = '제'; //한글자만 넣을 수 있다. char ch2 = '민'; System.out.println(ch1); System.out.println(ch2);//결과 제 민
논리형
boolean: 1비트, true 또는 false//논리형 boolean b1 = 10 > 5; //true boolean b2 = 20 == 10; // false System.out.println(b1); System.out.println(b2);//결과 true false
참조 자료형은 객체의 주소를 저장하는 변수형입니다. 배열, 클래스, 인터페이스 등이 이에 해당합니다.
상수는 한 번 값이 지정되면 변경할 수 없는 변수를 의미합니다. 자바에서는 final 키워드를 사용하여 상수를 선언합니다.
final int MAX_VALUE = 100;
리터럴은 소스 코드에 직접적으로 명시된 값을 의미합니다. 예를 들어, 숫자 10, 문자열 "Hello", 논리 값 true 등이 리터럴입니다.
int num = 10; // 숫자 리터럴 String text = "Hello"; // 문자열 리터럴 boolean flag = true; // 논리 리터럴
변수의 초기화는 변수를 선언한 후 처음으로 값을 지정하는 과정을 의미합니다. 초기화되지 않은 변수는 사용할 수 없습니다.
int num; // 선언 num = 10; // 초기화 int age = 25; // 선언과 동시에 초기화
형 변환(Type Casting)은 변수의 타입을 다른 타입으로 변환하는 것을 의미합니다. 자바에서는 자동(묵시적) 형변환과 강제(명시적) 형변환이 있습니다.
자동형 변환은 작은 크기의 자료형이 큰 크기의 자료형으로 자동 변환되는 것을 의미합니다.
자바에서는 데이터 손실이 발생하지 않거나, 손실이 거의 없는 방향으로 자동 변환을 진행할 수 있습니다.
그래서 자동형 변환은 작은 크기를 가지는 타입이 큰 타입을 가지는 타입으로만 저장이 가능합니다.
자동형변환이 가능한 방향
byte -> short -> int -> long -> float -> double
char -> int
int num = 10; double result = num; // int -> double (자동형 변환) System.out.println(result);//결과 10.0 ``
명시적 형 변환은 큰 크기의 자료형을 작은 크기의 자료형으로 변환할 때, 명시적으로 타입을 지정해야 하는 것을 의미합니다.
double pi = 3.1415; int num = (int)pi; // double -> int (명시적 형 변환) System.out.println(num);//결과 3
명시적 형 변환 시 데이터 손실이 발생할 수 있으므로 주의해야 합니다.
(ex. long타입의 경우 int로 바꿀 때 8비트에서 4비트로 바뀌기 때문에 숫자와 부호가 바뀔수 있습니다.)
long num = 3000000007L; int num2 = (int)num; System.out.println(num2);//결과 -1294967289