L = Long
f = float
d = double (생략가능)
- 접미사는 대소문자를 구별하지 않지만, 1과 혼동 가능하므로 대문자로 사용하는 것이 Best!
- '\n' = 개행문자(줄바꿈 문자)
- "문자" 여도 문자열이 된다.
- byte b = 127; (int 타입이 된다. / byte와 short의 리터럴은 없으므로 int를 사용)
- byte 는 -128 ~ 127 까지만 사용 가능하다.
- 접두사도 대소문자를 구별하지 않는다.
- int 타입은 최대 20억까지이므로 그 이상은 long 타입으로 담아야 한다.(끝에 접미사 L붙여야 한다.)
- Ex) long l = 10_000_000_000L;
long l = 100; // Ok(int의 최댓값을 넘지 않기 때문에 L 필요 x)
- 실수형 역시 f와 d를 접미사로 붙인다.
- Ex) float f = 3.14f; (f 생략 불가능)
double d = 3.14d; (d 생략 가능)
Quiz) 10. = 10.0(double) 뒤에 접미사가 없으므로
.10 = 0.10(double) 뒤에 접미사가 없으므로
10f = 10.0(float) 뒤에 접미사가 있으므로
1e3 = 1000.0(e가 10의 n제곱이기 때문&실수형이기 때문에) / 접미사가 없으므로 double 타입이다.
1. 범위가 '변수 > 리터럴' 인 경우, ok
- Ex) int i = 'A'; // int > char (문자 'A'가 저장되는 것이 아니라, 문자 A의 문자코드인 65가 저장된다. / 저장하려는 것이 문자타입이지만 int타입이 더 크므로 가능하다.)
- Ex) long i = 123; // long > int
- Ex) double d = 3.14f; // double > float
2. 범위가 '변수 < 리터럴' 인 경우, 에러
- Ex) int i = 30_0000_0000; // int의 범위(20억)에서 벗어남
- Ex) long l = 3.14f; // long < float (long = 8byte, float = 4byte다. 그러나, 실수형이 정수형보다 저장범위가 더 넓기 때문에 에러 발생)
Ex) float f = 3.14; // float < double
3. byte, short 변수에 int 리터럴 저장가능
단, 변수의 타입의 범위 이내이어야 함
- Ex) byte b = 100; // ok, byte의 범위(-128 ~ 127)에 속함
- Ex) byte b = 128; // 에러, byte의 범위를 벗어남
- char ch = 'A'; (문자는 홑따음표 / 캐릭터 변수)
- char ch ='AB'; // 에러(두 개 이상의 문자 x)
- String s = "ABC"; (2개 이상의 문자는 쌍따음표 / 스트링 변수)
- String은 자바에서 제공하는 클래스다. / 문자열을 다룰 때 사용한다. / 원래 클래스를 사용할 때는 new를 붙여줘야 하지만, String은 기본형으로 사용가능하다.
- 문자열 = 연속된 여러문자를 의미하지만,
String s = "A"; (문자가 하나여도 ok)
String s = ""; // 빈 문자열 (문자가 없어도 ok)
String ch = ''; // 에러
- String s1 = "A" + "B" // "AB" (문자열을 하나로 결함하라는 뜻)
- Ex) "" + 7 -> "" + "7" -> "7" (숫자를 문자열로 바꿀 수 있다.)
"" + 7 + 7 -> "7" + 7 -> "7"+"7" -> "77"
7+7+"" -> 14+"" -> "14"+"" -> "14:
- 문자열 + any type -> 문자열
- any type + 문자열 -> 문자열
int x = 10, y = 20; 일 때, 두 변수의 값을 교환하기 위해
- x = y; // y의 값을 x에 저장
y = x; // x의 값을 y에 저장 하면, 두 변수의 값 모두 20이 된다.
- 두 변수의 값을 바꾸기 위해서는 다른 변수 하나가 더 필요하게 된다.
- Ex) int x = 10, y = 20;
int tmp;
tmp = x; // x의 값을 tmp에 저장
x = y; // x의 값을 y에 저장
y = tmp; // tmp의 값을 y에 저장
- 문자 -> char
- 숫자 -> 정수 -> byte, short, int, long
숫자 -> 실수 -> float, double- 논리 -> boolean
* 이 8개의 type을 기본형이라 한다.
- 기본형
- 오직 8개 (boolean, char, byte, short, int, long, float, double)
- 실제 값을 저장- 참조형 (객체의 주소를 저장하기 위해 사용)
- 기본형을 제외한 나머지 (String, System 등) / 무한개
- 메모리 주소를 저장(4byte 또는 8byte)
- 기본형이 나타낼 수 있는 메모리 주소는 각각마다 다르지만, 참조형은 항상 4byte다.
- 4byte로 나타낼 수 있는 최댓값은 약 40억 정도이며, 4byte의 참조변수로는 4gb의 메모리를 다룰 수 있다. OS/JVM에서 사용하는 메모리를 제외화멱 약 2GB이다.
- 32bit의 JVM에서는 4byte / 64bit의 JVM에서는 8byte의 참조변수의 크기를 가진다.
- 64bit의 JVM은 40억*40억 = 160경 / 1600만 테라바이트이다.
- Date today; // 참조형 변수 today를 선언
- today = new Date(); // today에 객체의 주소를 저장 (new Date();라는 객체를 생성한헤서 참조변수 today에 저장한다. / 만일 생성된 객체의 주소대가 100번대라면, today는 100번대가 저장된다. / today라는 참조변수를 통해서 생성된 객체를 사용할 수 있다.)