int age; // 정수타입의 변수 age를 선언age = 25; // 변수 age에 25를 저장int x = 0; // 변수 x를 선언 후, 0으로 초기화int y = 5; // 변수 y를 선언 후, 5로 초기화int x = 0, y = 5; // 위의 두 줄을 한 줄로
변수의 초기화 : 변수에 처음으로 값을 저장하는 것
[주의] 지역 변수는 읽기 전에 꼭! 초기화해야 함.
4. 변수의 값 읽어오기
int year = 0, age = 14;year = age + 2000;// -> year = 14 + 2000;// -> year = 2014;age = age + 1; // 변수의 값을 1 증가시키는 방법// -> age = 14 + 1;// -> age = 15;System.out.println(age);// -> System.out.println(15); // 15가 화면에 출력됨
변수의 값이 필요한 곳에 변수의 이름을 적는다.
4. 변수의 타입
1. 변수의 타입
int age = 25; // 정수타입이기 때문에 정수를 저장할 수 있음age = 3.14; // 할당값이 정수가 아니기 때문에 에러
변수의 타입은 저장할 값의 타입에 의해 결정된다.
char ch = '가'; // char는 문자 타입double pi = 3.14; // double은 실수 타입
저장할 값의 타입과 일치하는 타입으로 변수를 선언
2. 값의 타입
8개의 기본 타입 (Primitive Type)
값(data)
문자 - char
숫자
정수 - byte, short, int, long
실수 - float, double
논리 - boolean
5. 상수와 리터럴
int score = 100;score = 200;final int MAX = 100; // MAX는 상수MAX = 200; // 에러char ch = 'A';String str = "abc";// 변수 : score, ch, str// 상수 : MAX// 리터럴 : 100, 200, 'A', "abc"
변수(variable) - 하나의 값을 저장하기 위한 공간
상수(constant) - 한 번만 값을 저장 가능한 변수
리터럴(literal) - 그 자체로 값을 의미하는 것
6. 리터럴의 타입과 접미사
종류
리터럴
접미사
논리형
false, true
없음
정수형
123, 0b0101, 077, 0xFF, 100L
L
실수형
3.14, 3.0e8, 1.4f, 0x1.0p-1
f, d
문자형
‘A’, ‘1’, ‘\n’
없음
문자열
“ABC”, “123”, “A”, “true”
없음
boolean power = true;char ch = 'A';String str = "ABC";byte b = 127; // int타입의 리터럴 사용, 다만 byte의 범위에 들어와야 함byte b = 128; // 에러// 접두사 : 0b, 0x, 0int i = 100; // 10진수int bin = 0b0101 // 2진수int oct = 0100; // 8진수int hex = 0x100; // 16진수long l = 10_000_000_000L; // 20억 초과 시 L 필수 적용long l = 100; // L 생략 가능float f = 3.14f; // f 생략 불가double d = 3.14d; // d 생략 가능10. -> double 10.0.10 -> double 0.1010f -> float 10.0f1e3 -> double 1000.0
7. 변수와 리터럴의 타입 불일치
int i = 'A'; // int > char// 'A' 는 65long l = 123; // long > intdouble d = 3.14f; // double > float
범위가 ‘변수 > 리터럴’ 인 경우, OK
int i = 3_000_000_000; // int의 범위 벗어남long l = 3.14f; // long < floatfloat f = 3.14 // float < double
범위가 ‘변수 < 리터럴’ 인 경우, 에러
byte b = 100; // OKbyte b = 128; // 에러, (-128 ~ 127) 범위 벗어남
byte, short 변수에 int 리터럴 저장 가능
단, 변수의 타입의 범위 이내이어야 함
8. 문자와 문자열
char ch = 'A';char ch = 'AB'; // 에러String s = "ABC";// String은 클래스String s1 = "AB"; // s1에 주소를 저장String s2 = new String("AB"); // 생성자 생략 가능String s = "A";String s = ""; // 빈 문자열char ch = ''; // 에러String s1 = "A" + "B"; // "AB"""+7 -> ""+"7" -> "7"""+7+7 -> "7"+7 -> "7"+"7" -> "77"7+7+"" -> 14+"" -> "14"+"" -> "14"
9. 두 변수 바꾸기
int x = 10, y = 20;x = y; // y의 값을 x에 저장y = x; // x의 값을 y에 저장int x = 10, y = 20;int tmp;tmp = x; // x의 값을 tmp에 저장x = y; // x의 값을 y에 저장y = tmp; // tmp의 값을 y에 저장
10. 기본형과 참조형
기본형(Primitive Type)
오직 8개 (boolean, char, byte, short, int, long, float, double)
실제 값을 저장
각 타입마다 메모리 사용 크기가 정해져 있기 때문에 범위를 초과할 경우 오버플로우 현상이 발생할 수 있음
스택 영역에 생성
참조형(Reference Type)
기본형을 제외한 나머지 (String, System 등)
메모리 주소를 저장(4 byte 또는 8 byte)
null 값을 대입할 수 있다면 참조 타입
힙 영역에 생성
Date today; // 참조형 변수 today를 선언today = new Date(); // 객체생성 후 today에 객체의 주소를 저장