
int age = 20; // 20 → 리터럴
final int MAX = 100; // 100 → 리터럴 (MAX는 상수)
String s = "java"; // "java" → 리터럴
| 분류 | 예시 | 메모 |
|---|---|---|
| 논리 | true, false | - |
| 정수 | 100, 0b0011, 077, 0xFF, 12L | L(long), 0(8진), 0x(16진) |
| 실수 | 3.14, 12.0e8, 7.7f | f(float), d(double, 생략 가능) |
| 문자 | 'A', '1', '\n' | 홑따옴표 |
| 문자열 | "Hello" | 쌍따옴표 |
System.out.println('a' + 1); // 98+(이어붙이기)만 가능+는 가능)실수는 부동소수점 오차 유의:
1.23 % 1.0 → 0.229999999999...
int age; // 선언
age = 20; // 대입(초기화)
int point = 100; // 동시 초기화
| 타입 | 크기 | 범위(개략) |
|---|---|---|
| byte | 1B | -128 ~ 127 |
| short | 2B | -2^15 ~ 2^15-1 |
| int | 4B | -2^31 ~ 2^31-1 |
| long | 8B | -2^63 ~ 2^63-1 (L 필요) |
| float | 4B | 약 3.4e±38 (f 필요) |
| double | 8B | 약 1.7e±308 |
| char | 2B | 0 ~ 65535(유니코드) |
| boolean | 1B | true / false |
| String | 참조형 | 문자열 |
(컴파일 에러)
_와 $만 허용(권장 컨벤션)
memberAddress_로 단어 연결 지양(타 언어 스타일)isAlivefinal int AGE = 20;
// AGE = 30; // 컴파일 에러
System.out.println(AGE);
MAX_AGE, DEFAULT_TIMEOUTbyte n = 127; // 최댓값
n++; // → -128 (오버플로우)
int a = 1_000_000;
int b = 700_000;
long wrong = a * b; // 이미 int에서 오버플로우 발생
long ok = (long)a * b; // 피연산자부터 long으로
byte → short → int → long → float → doublechar → intint i = 10; long l = 20;
long sum = i + l; // OK
char c = 'A';
int n = c; // 65
long l = 8;
int i = (int) l;
double d = 8.5;
int x = (int) d; // 8 (소수 절삭)
int i = 10; long l = 100;
int a = (int)(i + l);
long b = i + l;
byte b1 = 1, b2 = 2;
int r = b1 + b2; // 결과는 int
int big = 290;
byte small = (byte) big; // 34 (상위 비트 손실)
double h = 175.5;
int f = (int) h; // 175
// 문자열 이어붙이기
System.out.println("9" + 9); // 99
System.out.println(9 + "9"); // 99
System.out.println("9" + (9 + 9)); // 918
// 문자 산술 (유니코드)
System.out.println('a' + 1); // 98
System.out.println('A' + 'B'); // 131
// 불리언은 산술 불가(문자열 + 는 가능)
System.out.println(true + "a"); // truea