변수(Variable): 값이 변할 수 있는 데이터를 임시적으로 저장하기 위한 수단
class Main {
public static void main(String[] args) {
int num; //변수 선언
}
-> num이라는 변수에 정수형의 숫자를 저장할 수 있음class Main {
public static void main(String[] args) {
int num; //변수 선언
num = 1; //값 할당(초기화)
num = 2; //값 할당(재할당)
}
}
재할당 가능 -> 저장하고 있는 값이 변할 수 있다는 것 : 변수
class Main {
public static void main(String[] args){
int num = 1; //선언과 동시에 초기화
}
}
상수(Constant): 변하지 말아야 할 데이터를 임시적으로 저장하기 위한 수단
타입에 따라 값이 차지하는 메모리 공간의 크기와 값이 저장되는 방식이 결정됨
기본타입(primitive type)
참조타입(reference type)
"변수는 ~이다" -> 기본 타입의 데이터
"변수는 132페이지에 설명되어 있다" -> 참조 타입의 데이터
public class Main {
public static void main(String[] args) {
int primitive = 1;
Object reference = new Object();
System.out.println(primitive); //1
System.out.println(reference); //java.lang.Object@626b2d4a
}
}
리터럴(Literal): 문자가 가리키는 값 그 자체
class Main{
public static void main(String[] args){
int num; //변수 선언
num = 1; //값 할당
num에 할당하고 있는 1이 리터럴.
float 타입의 변수에 실수형 리터럴을 할당할 때, 리터럴 뒤에 접미사 f를 붙여주어야 함
long 타입의 변수에 정수형 리터럴을 할당할 때, 리터럴 뒤에 접미사 L을 붙여주어야 함
float weight= 74.5f;
final long LIGHT_YEAR = 9460730472580L;
오버플로우
언더플로우
byte -> short -> int -> long
double형은 float형보다 더 큰 실수를 저장할 수 있고, 더 정확하게 저장할 수 있음.
오버플로우
언더플로우
char letter1 = 'a';
char letter2 = 'ab'; // 에러: 단 하나의 문자만 할당할 수 있다.
char letter3 = "a"; // 에러: 작은 따옴표만 사용해야 한다.
boolean형을 제외한 기본 타입 7개는 서로 타입을 변환할 수 있음.
byte(1) -> short(2)/char(2) -> int(4) -> long(8) -> float(4) -> double(8)
float이 표현할 수 있는 값이 모든 정수형보다 더 정밀하기 때문에 뒤쪽에 있음.
//int 타입으로 선언된 변수 intValue를 더 작은 단위인 byte로 변환함.
int intValue = 128;
byte byteValue = (byte)intvalue;
System.out.println(byteValue); //-128