6. 리터럴의 접두사와 접미사
: 모든 리터럴에는 타입이 있다.
접미사는 대소문자를 구별하지 않지만, I는 숫자 1과 헷갈리기 때문에 보통 대문자 L을 사용한다.
f에만 붙여도 구별이 가능하기 때문에, d는 일반적으로 생략
\n : 개행문자
문자가 하나여도, " 큰 따옴표로 붙이면, 문자열 타입이다.
byte 변수는 접미사가 붙지 않아서, integer 타입의 숫자를 작성하면 되지만
: 128부터 127까지 그 사이의 값이어야 한다.
- 정수형 리터럴은 10진법 이외에도 다른 진법으로 표현이 가능하다.
0이 붙으면 8진수
0b가 붙으면 2진수를 의미한다.
0x.... 16진수
백억은 무조건 integer의 범위를 넘는 (예: 백억) 값을 입력할 때는 접미사 L을 꼭 붙여야 한다.
f는 생략 불가능하다.
* 퀴즈
10. = 10.0 에서 0 이 생략된 것 = double type
.10 = 0.10에서 0. 이 생략된 것 = double type
10f = 10.0f에서 .0f가 생략된 것 = float type
1e3 = 1 * 10^3 = 1000 = 1000.0 = 1000.0 d(생략)
ㄴ e가 의미하는 것 10^n 제곱 / 기호 e 는 실수형에 사용됨
7. 변수와 리터럴의 타입 불일치
1) 범위가 변수 > 리터럴 인경우 ok
2) 범위가 변수 < 리터럴인 경우, 에러
long l = 3.14f ;
long(8byte), float(4byte)
가능할 것 같지만 사실
실수형은 정수형보다 저장범위가 훨씬 넓다.
float f = 3.14 ; // double 타입을 float 타입의 변수에 저장한다. (불가능 double이 더 넓겠지?)
= 3.14d
3) byte, short 변수에 int 리터럴 저장 가능
byte와 short만의 지정된 리터럴 타입이 없기 때문에 int 타입으로 저장 가능하지만,
그 범위 내에서 입력해야 한다. 그렇지 않으면 에러
package ch02;
public class VarEx3 {
public static void main(String[] args) {
final int score = 100;
// score = 200;
boolean power = false;
byte b = 127;
int oct = 010; // 8진수, 10진수로 8
int hex = 0x10; // 16진수, 10진수로 16
System.out.println(oct);
System.out.println(hex);
//8진수나 16진수로 출력하고 싶다면 printf 메소드를 사용해야 한다.
long l = 1000_000_000;
long l2 = 10_000_000_000L;
//L을 붙여줘야 에러가 발생하지 않는다.
// (int)10_000_000_000L 이라서 그런가?
float f = 3.14f;
// float f2 = 3.14; // 에러 발생
double d = 3.14d;
double d2 = 3.14f; // 즉 작은 물건을 큰 그릇에 담는 경우
System.out.println(10.);
System.out.println(.10);
System.out.println(10f);
System.out.println(1e3);
//값이 출력될 때 접미사는 출력되지 않는다.
}
}
'자바의정석' 카테고리의 다른 글
[자바의 정석 - 기초편] ch2-9 두 변수 바꾸기 (0) | 2022.01.19 |
---|---|
[자바의 정석 - 기초편] ch2-7,8 문자, 문자열 리터럴, 문자열 결합 (0) | 2022.01.19 |
[자바의 정석 - 기초편] ch2-5 상수와 리터럴 (0) | 2022.01.18 |
[자바의 정석 - 기초편] ch2-4 변수의 타입 (0) | 2022.01.18 |
[자바의 정석 - 기초편] ch2-3 변수란? 변수의 선언과 저장 (0) | 2022.01.18 |