자동 타입 변환
자동 타입 변환은 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 정장될 때 발생
큰 허용 범위 타입 = 작은 허용 범위 타입
허용범위 크기순 정렬
public static void main(String[] args) {
byte byteval = 2;
int intval = byteval;
System.out.println(intval);
}
위의 코드의 경우 정상적으로 2가 출력되지만, 아래의 경우
public static void main(String[] args) {
int intval = 2;
byte byteval = intval;
System.out.println(byteval);
}
Type mismatch: cannot convert from int to byte
다음과 같은 type mismatch 오류가 발생한다. 강제 타입 변환을 통해 해당 오류를 해결할 수 있다.
* char 타입보다 byte 타입의 허용범위가 작지만, char 타입은 허용범위 중 음수를 포함하지 않기 때문에 변환이 되지 않는다.
강제 타입 변환
캐스팅 연산자를 사용해서 타입을 강제 변환할 수 있다.
작은 허용 범위 타입 = (작은 허용 범위 타입)큰 허용 범위 타입
public static void main(String[] args) {
int intval = 2;
byte byteval = (byte)intval;
System.out.println(byteval);
}
다음과 같이
byte = byteval = (byte)intval;
를 입력하면 강제로 타입을 변환할 수 있다
연산에서의 자동 타입 변환
정수 타입 변수가 산술 연산식에서 피연산자로 사용되면 int 타입보다 작은 byte, short 타입의 변수는 int 타입으로 자동 타입 변환된다.
public static void main(String[] args) {
byte val1 = 1;
byte val2 = 2;
byte var3 = val1 + val2; //오류 : Type mismatch: cannot convert from int to byte
int var3 = val1 + val2 ;
System.out.println(var3);
}
오류 : Type mismatch: cannot convert from int to byte
오류가 발생하므로 계산된 값은 int 변수에 저장해야한다.
피연산자 중 허용 범위가 더 큰 피연산자로 계산되므로 피연산자 중 long, double 이 있을경우 연산 결과는 범위가 큰 연산자로 저장되어야한다.
+ 연산자에서의 문자열 자동 타입 변환
+ 연산자는 둘 다 숫자면 덧셈연산, 하나라도 문자열이면 결합연산을 수행한다.
문자열을 기본 타입으로 강제 타입 변환
메소드를 이용해 강제 형 변환한다
String -> byte | Byte.parseByte(str) |
String -> short | Short.parseShort(str) |
String -> int | Integer.parseInt(str) |
String -> long | Long.parseLong(str) |
String -> float | Float.parseFloat(str) |
String -> double | Double.parseDouble(str) |
String -> boolean | Boolean.parseBoolean(str) |
'study > JAVA' 카테고리의 다른 글
[JAVA] 메서드 호출 (0) | 2023.03.01 |
---|---|
[JAVA] 변수 타입과 값 할당 (2) | 2023.02.26 |
[JAVA] 키워드와 식별자 (0) | 2023.02.26 |