💡 JAVA 를 학습하면서 헷갈렸던 내용 재정리
💡 리터럴 vs 상수 vs 변수 에 대한 정리
1) 리터럴 vs 상수 vs 변수 정의 비교
개념 | 정의 | 선언 방식 |
---|---|---|
리터럴 | 변하지 않는 데이터 값 그 자체 | int a = 10(리터럴) |
상수 | 변하지 않는 데이터가 저장되는 공간 | int final a(상수) = 10 |
변수 | 변하는 데이터가 저장되는 공간 | int a(변수) = 10 |
2) 리터럴 종류
종류 | 예시 | 접두사, 접미사 | 리터럴 타입 |
---|---|---|---|
논리형 | false, true | boolean( 1Byte) | |
정수형 | 100, 0b0011, 077, 0xFF, 12L | L (long타입) - ex. 12L 0 (8진수) - ex. 0132 0x, OX (16진수) - 0x123 | byte( 1Byte ) short( 2Byte ) int( 4Byte ) - 정수형 default long( 8Byte ) |
실수형 | 3.14, 12.0e8, 7.7f | f, F (float) - ex. 0.12f(F) d (double) - ex.012d(D) | float( 4Byte) double( 8Byte ) - 실수형 default |
문자형 | ‘O’, ‘1’, ‘\n’ | char( 2Byte ) | |
문자열 | “OHGIRAFFERS”, “100”, “Hello” | String( 4Byte ) |
3) 리터럴끼리의 연산
-- 1) 문자형 리터럴 연산
# 문자형 + 정수형 연산 가능
System.out.println('a' + 12)
# 문자형 + 문자형 연산 가능
System.out.println('a' + 'b');
-> 'a'(아스키코드: 97) + 12 = 109
-> 'a'(아스키코드: 97) + 'b'(아스키코드: 98) = 195
-- 2) 실수와 실수의 연산
💡 부동소수점 이란?
: 실수를 근사적으로 표현하는 방식
# 실수형 + 실수형 연산 가능
System.out.println(1.23 % 1.0);
-> 0.22999999999999998 (근사치)
4) 오버플로우(overflow) & 언더플로우(underflow)
💡 오버플로우(overflow)와 언더플로우(underflow)
: 데이터가 저장될 수 있는 최대 크기를 초과 (overflow)
: 데이터가 저장될 수 있는 최소 크기를 초과(underflow)
-- 1) 오버플로우(overflow)
# 오버플로우 발생
byte num1 = 127;
System.out.println("num1 : " + num1); //127 : byte의 최대 저장 범위
num1++; //1 증가
System.out.println("num1 overflow : " + num1); //-128 : byte의 최소 저장 범위
-> num1 : 127
-> num1 : -128
-- 2) 언더플로우(underflow)
# 언더플로우 발생
byte num2 = -128;
System.out.println("num2 : " + num2); //-128 : byte의 최소 저장 범위
num2--; //1 감소
System.out.println("num2 underflow : " + num2); //127 : byte의 최대 저장 범위
-> num2 : -128
-> num2 : 127
💡 연산자(Operator) 는 우선순위 가 존재 ( => 단산시교비논삼대)