JAVA
자바 기초 : 타입 변환(자동 타입 변환과 강제 타입 변환)
- -
핵심개념
- 타입변환 : 데이터 타입을 다른 데이터 타입으로 변환하는 것. 변수 값을 다른 타입변쉥 저장할 때 타입변환이 발생할 수 있다. 타입변환은 크게 자동타입변환과 강제타입변환이 있다.
ex) byte -> int / int -> byte
ex) byte a = 1; int b = a; - 자동타입변환 : 컴파일러에 의해 자동으로 타입이 변환 되는 것. 값의 허용범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 자동으로 발생된다.
허용범위 크기순 : byte < short < int < long < float < double
char타입의 경우 int타입으로 자동변환되면서 유니코드 값이 int 타입에 저장된다.
하지만 byte 타입은 char 타입보다 허용범위가 작음에도 불구하고 char 타입으로 자동변환될 수 없는데, 그 이유는 byte 타입은 음수를 포함하는 반면, char 타입은 음수를 표함하지 않기 때문이다.
ex) char charValue = 'A'
int intValue = charValue; //65가 저장됨.
ex)byte byteValue = 65;
char charValue = byteValue //불가능. char은 음수를 포함하지 않기때문에 byte로 변한되지 않음.
public static void main(String[] args) {
byte byteValue = 20; int intValue = byteValue; //byte->int System.out.println("intValue : "+intValue); char charValue = '다'; intValue = charValue; //char->int System.out.println("'다'의 유니코드 : "+intValue); intValue = 50; long longValue = intValue; //int->long System.out.println("longValue : "+longValue); longValue = 100; float floatValue = intValue; //long->float System.out.println("floatValue : "+floatValue); floatValue = 100.5F; double doubleValue = floatValue; //float->double System.out.println("doubleValue : "+doubleValue); double total = 10.0f + 5.0;
System.out.println("total : "+total); //float->double 실행결과 : intValue : 20
'다'의 유니코드 : 45796 longValue : 50 floatValue : 50.0 doubleValue : 100.5 total : 15.0
|
public static void main(String[] args) {
byte x = 10; byte y = 25; /byte result = x + y 컴파일 에러. x,y int타입으로 자동변환 int result1 = x + y; System.out.println(result1); //연산에서 byte,short, char타입은 int타입으로 타동변환되어 연산된다. } 실행결과 : 35 |
public static void main(String[] args) {
byte result1 = 10 + 20; System.out.println(result1); byte byteValue1 = 10; byte byteValue2 = 20; /*byte byteValue3 = byteValue1 + byteValue2 byte->int로 자동변환되어 계산되기 때문에 컴파일 에러 */ int intValue1 = byteValue1 + byteValue2; System.out.println(intValue1); /*result1처럼 리터럴 연산은 자동타입변환에서 제외, intValue1같은 변수연산은 자동타입변환되어 연산*/ char charValue1 = 'A';//65 char charValue2 = 1; /*char charValue3 = charValue1 + charValue2; char->int로 자동변환되어 계산되기 때문에 컴파일 에러*/ int intValue2 = charValue1 + charValue2; System.out.println("유니코드 = "+intValue2); System.out.println("출력문자 = "+ (char)intValue2); int intValue3 = 10;
int intValue4 = intValue3/4; System.out.println(intValue4); int intValue5 = 10;
/*int intValue6 = 10/4.0* 컴파일 에러. double로 자동형 변환 후 계산*/ double doubleValue5 = intValue5/4.0; System.out.println(doubleValue5); int x = 1; int y = 2; double result = (double)x/y; System.out.println(result); double result2 = x/y; //int형으로(0) 계산된 값이 double(0.0)형으로 저장됨 System.out.println(result2); 실행결과 : 30
30 유니코드 = 66 출력문자 = B 2
2.5 0.5 0.0 |
- 강제타입변환 : 사용자가 타입 캐스트 연산자를 사용하여 강제로 타입을 변한하는 것. 큰 허용 범위의 타입을 작은 허용범위의 타입으로 변환할 때 발생한다.
변환방법 -> (변환할타입) 변환할데이터 -> 자바에서는 이를 타입 캐스트 연산자 또는 캐스팅 연산자라고 함.
public static void main(String[] args) {
int intValue = 44032; char charValue = (char) intValue; //int->char(문자로 출력가능) System.out.println(charValue); long longValue = 500; intValue = (int) longValue; //long->int System.out.println(intValue); double doubleValue = 3.14; intValue = (int)doubleValue; //long->int System.out.println(intValue); } 실행결과 : 가
500 3 |
- 연산에서 문자열의 자동타입변환 : 피연산자 중 하나가 문자열일 경우 다른 피여난자도 문자열로 자동 변환되어 문자열 결합 연상을 수행함.
ex) "문자열" + 숫자 -> "문자열" + "숫자 -> "문자열 숫자"
public static void main(String[] args) {
int value = 10 + 2 + 8; System.out.println("value : " + value); //피연산자가 모두 숫자일 경우 -> 덧셈 연산 수행 /*피연산자 중 하나가 문자열일 경우 다른 피연산자도 문자열도 자동변환되어 문자열 결합 연산 수행. 숫자가 문자를 만나는 순간 문자열로 변환*/ String str1 = 10 + 2 + "8"; System.out.println("str1 : " + str1); String str2 = 10 + "2" + 8; System.out.println("str2 : " + str2); String str3 = "10" + 2 + 8; System.out.println("str3 : " + str3); String str4 = "10" + (2 + 8); System.out.println("str4 : " + str4); //()안 연산을 먼저 수행하고 "10"+10 연산 수행 } |
- 연산에서 문자열의 강제타입변환 : 캐스팅 문자가 아닌 API(Application Programming Interface)를 이용해서 강제로 변환한다.
ex)문자열을 정수 및 실수 타입으로 변환해서 숫자연산을 하는경우, 정수 및 실수를 문자열로 변환해서 연산하는 경우
Integer.parseInt() : 문자열을 정수 int 타입으로 변환
Double.parseDouble() : 문자열을 실수 double 타입으로 변환
Boolean.parseBoolean() : 문자열을 Boolean 타입으로 변환
public static void main(String[] args) {
//문자열을 기본 타입으로 강제 타입 변환 //int i = "10"; 컴파일 에러 int i = Integer.parseInt("10"); //문자열->int double j = Double.parseDouble("3.14"); //문자열->double boolean k = Boolean.parseBoolean("true"); //문자열->Boolean System.out.println("i : "+ i); System.out.println("j : "+ j); System.out.println("k : "+ k); //기본타입을 문자열로 강제 타입 변환 //String str1 = 10; 컴파일 에러 String str1 = String.valueOf(10); //정수->문자열 String str2 = String.valueOf(3.14); //실수->문자열 String str3 = String.valueOf(true); //boolean->문자열 System.out.println(str1); System.out.println(str2); System.out.println(str3); } 실행결과 : i : 10
j : 3.14 k : true 10 3.14 true |
'JAVA' 카테고리의 다른 글
자바 기초 : 연산자와 연산자의 종류 (2) | 2023.02.21 |
---|---|
자바 기초 : 변수와 시스템 입출력 (0) | 2023.02.20 |
자바 기초 : 변수의 기본타입 (0) | 2023.02.19 |
자바 기초 : 변수 (0) | 2023.02.18 |
자바 기초 : 자바 시작하기 (0) | 2023.02.18 |
Contents
소중한 공감 감사합니다