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(기본타입값);