변수의 종류
기본 타입 : 정수, 실수, 문자, 논리 리터럴을 저장하는 타입
- 정수 타입 : byte(1byte), short(2byte), char(2byte, 음수불가), int(4byte), long(8byte)
- 실수 타입 : float, double
- 참조 타입 : 배열, 열거, 클래스(ex. String), 인터페이스의 객체를 참조하여 객체의 주소를 저장
기본 타입의 자동 타입 변환
byte < shot < int < long < float < double
어떤 변수를 새로운 변수에 저장할 때, 큰 허용 범위 타입으로 변환된다.
char는 int로 변환가능 하지만, byte는 char로 변환 불가 하다.
강제 타입 변환
큰 허용 범위 타입을 작은 허용 범위 타입으로 강제로 저장할 때
변환할 변수 앞에 “(바꿀 타입)”을 붙여준다.
정수 연산에서 자동 타입 변환
피연산자 타입에 byte, char, short는 연산 후 int로 자동 타입 변환된다.
long이 있다면 long으로 변한다.
실수 리터럴 연산
double로 넣어주어야 한다.
(리터럴 연산은 컴파일러에서 해주고, 변수의 연산은 jvm이 한다.)
피연산자에 String이 포함되어 있을 때
결과가 문자열로 나옴
문자열을 기본타입으로 강제 변환
API 이용
Byte.parseByte(str) / Integer.parseInt(str) / Float.parseFloat(str) / Boolean.parseBoolean(str)
기본 타입을 문자열로 변환 API
String.valueOf(3)
클래스의 타입 변환
자식 클래스는 부모 클래스로 자동 타입 변환이 가능하다.
타입 변환과 메소드 재정의를 통해 다형성을 실현할 수 있다.
자동 타입 변환
()가 없으면 자동 타입 변환
예전 부모 클래스의 필드나 메소드를 사용하고 싶을 때, 자동 타입 변환하면 된다.
메소드가 재정의 되었다면 그건 재정의 된 메소드가 사용된다.
(타입 변환된 변수는 여전히 자식 객체 위치를 참조하고 있다.)
매개변수에 이용한다면 자동 타입 변환은 매개변수에 부모 객체, 자식 객체 모두 사용 가능하도록 한다.
강제 타입 변환
다시 자식으로 사용하고 싶을 때 casting을 한다. ()를 사용하여 강제 타입 변환을 한다.
강제 타입 변환 하기 전, 지금 무슨 타입인지 확인 불가 할 때, 오류(예외)가 발생하지 않도록
“Boolean result = 객체 instanceof 타입” (객체가 해당 타입이면 true) 으로
boolean값을 확인 후, 강제 변환 할 수 있도록 코딩한다.