Java
Java 기초 문법(2)
siwoli
2023. 12. 20. 02:10
타입 변환
- 타입 변환이 줄면 실행 성능이 향상됨!
- 자바는 실행성능을 향상시키기 위해 컴파일 단계에서 연산 수행 가능
byte result = 10 + 20;
/* 자바 컴파일러는 컴파일 단계에서 10 + 20을 미리 연산해 30을 만들고,
result변수에 30을 저장하도록 바이트 코드 생성
/*
자동 타입 변환
- 작은 범위에서 큰 범위로는 자동 형변환됨
(byte → short, char → int → long → float → double)
- char 타입이 int로 자동변환되면 유니코드 값이 int 타입에 저장됨
- byte타입은 음수를 포함하는데 char타입은 음수를 포함하지 않으므로 byte → char 변환X
정수 & 실수 연산에서 자동타입변환
- 자바에서 정수타입들 간의 연산 결과는 int타입이 되고, 실수타입들 간의 연산 결과는 double타입이 됨
- 피연산자들 중에서 가장 범위가 큰 타입으로 모든 변수가 변환된 후에 연산됨
int x = 10;
byte y = 20;
long z = 30;
long result = x + y + z;
/* 피연산자들중 long타입이 가장 크므로
모든 변수가 long타입으로 변환되고 연산수행*/
- 타입 변환 후에 연산을 수행하므로 정수끼리의 연산 결과를 실수 변수에 저장하면 정수 값이 저장됨. 이럴땐 강제 타입 변환하면 됨
int x = 10;
int y = 20;
double result = x / y;
System.out.println(result); // 0.0
+연산에서 자동타입변환
- +연산자가 연이어 나올때 먼저 수행된 연산이 덧셈이면 덧셈 결과를 가지고 그다음 + 연산 수행하고, 먼저 수행된 연산이 문자열 결합이면 이후 모든 +연산은 결합 연산이됨
String str = 1 + 2 + "3";
System.out.println(str); // 33
강제 타입 변환
- 큰 범위에서 작은 범위로 갈때는 강제로 형변환해야함
(double → float → long → int → short, char → byte)
- 문자열(String)은 char타입으로 강제 타입변환할수 없음
float scoreF = 98.7F;
System.out.println((int)scoreF); // 98
int score;
score = 95 + (int)96.78;
System.out.println(score); // 191
문자열을 기본 타입으로 강제 타입 변환
String → 기본타입(int, double, boolean,…) 변환 방법
type 변수명 = Type.parseType(문자열);
String str = "12.345";
double value = Double.parseDouble(str);
- 문자열이 숫자가 아닌 알파벳, 한글, 특수문자등을 포함하면
NumberFormatException
발생
기본 타입을 문자열로 변환
String str = String.valueOf(기본타입값);