🔥 Vamos/Java

0822 | 자바의 정석 기초편 :: ch2-6

unikue 2022. 8. 23. 22:59

~ 22.08.20-22 제주여행. 22일자부터 얼른 벌충 ~

 

 

 

리터럴의 접두사와 접미사

종류 리터럴 접미사
논리형 false, true 없음
정수형 100L,123(int), 0xFF(int) L (long type,소문자l과 1을 혼동하지 않기위해 대문자로 작성)
실수형 (소수점) 3.14, 1.4f f (float) ,d (d는 생략가능)
문자형 (작은따옴표) 'A', '1','\n' 없음
문자열 (큰따옴표) "ABC", "123","TRUE" 없음

* \는 줄바꿈문자, 개행문자

 

boolean power = true; or false;

char ch ='A';

String str = "ABC"; "A" // 여러 문자열은 큰따옴표, 하나의 문자열도 가능

 

byte b = 127; // 정수인데 접미사가 없으니까 int타입임을 알 수 있음 byte타입에 저장할수 있는 수는 -128~127이므로 127은 저장 가능.

byte b = 128; // 에러 발생.

 

int i = 100; // 10진수 (접두사 없음)

int oct = 0100; // 8진수 (접두사 0)

int hex = 0x100; // 16진수 (접두사 0x)

int n = ob0101; // 정수형 앞에 ob가 붙으면 2진수 의미 (jkd 1.7부터 적용)

 

long 1 = 10_000_000_000L; // int타입의 최대값은 20억정도 이므로 그 이후 값은 long type. 언더바는 큰 숫자에 점 대용처럼 알아보기 쉬우라고 넣는 것. 아무데나 넣어도 상관은 없음.

long 1 = 100; // 가능

 

float f = 3.1f; // f를 생략할 경우 저절로 d타입이 되면서 에러 발생

double d = 3.1d; // d는 생략 가능.

 

10. > 10.0

.10 > 0.10 // 둘다 실수형이고 더블타입.

1e3 // e는 실수형에 사용되며 10의 n제곱,  1000.0과 같고 접미사가 없으므로 더블타입.

 

 

public class VarEx3 {
	public static void main(String[] args) {
		final int score = 100;
		boolean power = true;
		
		byte b = 127;
		
		int oct = 010; // 8진수, 10진수로 8
		int hex = 0x10; // 16진수, 10진수로 16
		
		long l = 10_000_000_000L;
		
		float f = 3.14f;
		double d = 3.14;
		
		System.out.println(b); //println은 10진수로만 출력가능 접두사, 접미사는 출력되지않음
		System.out.println(10.);
		System.out.println(.10);
		System.out.println(.10f);
		System.out.println(1e3);
	}
}

 

 

 

✔ 각 타입별 숫자 범위를 다시한번 알아봐야겠다. 헷갈린다.


변수와 리터럴의 타입 불일치

 

1) 범위가 변수 > 리터럴인 경우 : ok

int i = 'A'; // int > char  , A가 65로 변환되어 저장됨.

long 1 = 123; //  long > int

double d  = 3.14f // double > float

 

2) 범위가 변수 < 리터럴인 경우 : error

int i = 3_000_000_000 // int의 범위 20억을 벗어난 30억이므로 불가

long 1 = 3.14f; // long (8byte), float (4byte)여도 실수형은 정수형보다 저장범위가 훨씬 넓기 때문에 error

float f = 3.14; // float < double이므로 불가.

 

3) byte, short 변수에 int리터럴 저장 가능.

byte b = 100; // byte의 범위 -128~127에 속하므로 가능