2022. 2. 14. 15:33ㆍJAVA
먼저 3가지의 코드를 비교해보도록 하자.
package study_java;
public class CharToInt {
public static void main(String[] args) {
char ch ='A';
int a = 65;
char ch1 = a; //오류
System.out.println(ch1);
}
}
실행한다면 오류가 난다.
package study_java;
public class CharToInt {
public static void main(String[] args) {
char ch ='A';
int a = 65;
char ch1 = 65;
System.out.println(ch1);
}
}
실행시 콘솔창에 A가 나온다.
package study_java;
public class CharToInt {
public static void main(String[] args) {
char ch ='A';
int a = 65;
char ch1 = (char)a;
System.out.println(ch1);
}
}
마찬가지로 실행시에 콘솔창에 A가 나온다.
이를 이해하기 위해서는 정수타입, 문자타입, 그리고 형 변화에대해서 이해를 해야한다.
구분 | 데이터타입 | 사용 메모리 |
정수 타입 | byte | 1byte |
short | 2byte | |
int | 4byte | |
long | 8byte | |
문자 타입 | char | 4byte |
정수형 중에서는 int형이 기본 자료형이다.
char형은 문자를 내부적으로 정수값으로 저장하므로 정수형과 밀접한 관계가 있다.
형 변환에는 자동 타입변환과 강제 타입변환이 있다.
1.자동 타입변화는 작은 크기의 데이터 타입을 큰 크기의 데이터 타입으로 변환하는 행위를 말한다.
byte < short < int < long < float < double
(float과 double은 실수 타입이다.)
자동 타입변환에서 예외가 있다.
char형 2byte의 크기이지만 char의 범위는 음수가 저장될 수 없다. 때문에 음수가 저장될 수 있는 byte타입을 char타입으로 자동 변환 시킬 수 없다.
2. 강제 타입변환은 큰 크기의 데이터 타입에서 작은 크기의 데이터 타입으로 변환하는 행위를 말한다.
강제 타입 변환은 원래 값이 보존되지 않는다. 또한 '( )' 캐스트 연산자(현변환 연산자)를 사용해야한다.
예를 들어 double a =3.14;
int b = (int)a;
b 는 정수 부분인 3만 저장된다.
package study_java;
public class CharToInt {
public static void main(String[] args) {
char ch ='A';
int a = 65;
char ch1 = 65;
System.out.println(ch1);
}
}
자바에서 정수는 기본적으로 int형으로 되어집니다.
char ch1 = 65;에서 65라는 정수 자체는 int값입니다.
자동 타입변환에 따르면 int형이 char형으로 변환하는 것은 불가능하다.
하지만 자바에서는 정수 리터럴을 변수에 담는 것이 허용됩니다.
(리터럴이라는 것은 값(데이터) 그 자체를 뜻 합니다.)
package study_java;
public class CharToInt {
public static void main(String[] args) {
char ch ='A';
int a = 65;
char ch1 = a; //오류
System.out.println(ch1);
}
}
하지만 int a =65;와같이 int타입 변수에 명시를 해주면 자바에서는 자동 타입변환에따라서 char ch1 = a;는 허용이 되지 않는다.
package study_java;
public class CharToInt {
public static void main(String[] args) {
char ch ='A';
int a = 65;
char ch1 = (char)a;
System.out.println(ch1);
}
}
따라서, char 타입변수에 정수리터럴 또는 문자리터럴을 넣을 수는 있지만 이미 타입이 명시된 int형 변수를 담을 때에는 케스팅을 사용해야합니다.
이상입니다.
'JAVA' 카테고리의 다른 글
java공부 - 회원관리 프로그램 만들기 (0) | 2022.03.11 |
---|---|
java 공부 - 문자를 유니코드 변환하는 방법 (0) | 2022.03.09 |
java공부 - 객체와 클래스를 이용하여 계산기 만들기 (0) | 2022.02.23 |
JAVA 간단한 게임 만들기 - 가위바위보, 로또게임 만들어보기 (0) | 2022.02.19 |
JAVA와 운영체제간의 호환성 (0) | 2022.02.13 |