
남궁 성, 『Java의 정석』, 도우출판, 2016.
Intellij / JDK 25
여기서 java 설치는 다루지 않습니다.
논리형에는 'boolean' 한가지 밖에 없다. boolean 형 변수에는 true와 false 중 하나를 저장할 수 있으며 기본값(default)은 false이다.
그리고 자바에서는 True/False가 아니라 true/false 소문자이다.
문자형 역시 char 한 가지 자료형밖에 없다.
문자를 저장하기 위한 변수를 선언할 때 사용되며, char타입의 변수는 단 하나의 문자만을 저장할 수 있다.
아래의 문장은 char타입의 변수 ch를 선언하고, 문자 'A'로 초기화한다.
그리고 문자 리터럴 대신 문자의 유니코드를 직접 저장할 수도 있다.
그 문자의 유니코드를 보고싶으면 (int) 타입 변환을 해준다.
char ch = 'A';
char ch = 65;
int code = (int) ch;
서로 다른 타입간의 연산 수행 시에 수행 전에 타입을 형변환으로 일치 시켜야한다.
형변환은 변수나 리터럴의 앞에 변환하고자 하는 타입을 괄호와 함께 붙여준다.
요약:
1- 상위 -> 하위: (타입),
2- 하위 -> 상위: 생략, 자동화
double d = 85.4;
int score = (int) d; // double 타입 -> int 타입
int score = (int) d;
-> int score = (int)85.4;
-> int score = 85;
boolean을 제외한 나머지 타입들은 서로 형변환이 가능하다. 그리고 기본형과 참조형간의 형변환은 불가능하다.큰 타입에서 작은 타입으로의 변환,
예를 들어서 int타입의 값을 byte으로 변환하는 경우엔 저장 범위가 달라서 잘려나간다.
int a = 300;
byte b = (byte) a;
System.out.println(b);
// 결과 값: 44
작은 타입에서 큰 타입으로 변환은 손해볼 저장공간이 없으니 (타입) 생략 가능
실수형 타입에서도 정수형과 큰 틀은 비슷하다.
float보다 double 타입이 크니 double->float 변환 시 저장 공간 부족으로 일부분이 잘려나간다.
double u = 14.0;
float f = 3.2f + (float)u;
System.out.println(f);
// 결과 값: 17.2
역시 큰 틀은 비슷하다.
다만 실수형은 무조건 정수형 타입보다는 크다.
그러니 실수형에 절대 복종
// 정수형, 실수형 사이 변환 - 1
int c = 2;
double d = 14.0 + c;
System.out.println(d);
//결과: 16.0
// 정수형, 실수형 사이 변환 - 2
double z = 1.0;
int s = 3 + (int) z;
System.out.println(s);
//결과: 4