🔵 형변환
- 데이터의 Type이 변하는것
ex) 정수(byte) 와 실수(float)는 같은 숫자 타입이므로 형변환이 가능함 - 문자(char)와 문자열(string)은 문자를 다루지만, 단순 데이터 형변환이 불가능함 (문자열은 class 형태라서 불가능)
- 문자(char)와 정수(int)는 형변환이 가능함
-> 문자(char)는 '단일문자' 이고 (A~Z,1~0,특수기호.. 모든 자판글자) , 이는 정수로 변경이 가능(아스키 코드 표 참고)
기억하기 [변수의 데이터 타입]
1. 정수형 : byte, short, int, long (1,2,3,8byte 순으로 메모리 사용)
-byte: 8비트, 값의 범위: -128 ~ 127
-short : 16비트, 값의 범위 : -32,768~ 37,767
-int: 32비트, 값의 범위: -2^31 ~ 2^31 - 1 (약 -2,147,483,648 ~ 2,147,483,647)
-long: 64비트, 값의 범위: -2^63 ~ 2^63 - 1 (약 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)
2. 실수 형 : float, double(float의 데이터가 double로 바꿀때 부정확하기 때문에 <2.9999...
+float의 값 끝에는 f를 붙혀야 하기 때문에 거의 double 사용)
(ex. float flNum = 33.12f;)
3. 문자 : char (ex. 'A')
4. 문자열(문장) : String ("AAA"< 문장이 아니라 한 문자 "A" 여도 문자열의 성질을 띔)*혼자 class타
5. 논리형 : boolean (true / false, 참과 거짓을 저장 할 수 있음)
- 형변환의 종류
1. 자동 형변환 : 작은 데이터 타입이 더 큰 데이터 타입으로 자동으로 변환되는 것
(데이터 손실의 위험이 없기 때문에 자동으로 수행 됨)
ex) int(약 20억)를 long(약 20억 이상) 에 할당할때 : 자동 형변환 : a=b 로 표기함
2. 강제 형변환: 더 큰 데이터 타입을 더 작은 데이터 타입으로 변환되는 것
(데이터 손실의 위험이 있어서 명시적으로 표기 하기 때문에 (byte)와 같이 (변환할것)이 붙음)
ex) int를 byte에 할당할때 : 강제 형변환 : b=(byte)c 로 표
✏️ 자동 형변환 / 강제 형변환 예시1 (정수끼리 형변환)
package exam03;
public class ChangeTypeExam {
public static void main(String[] args) {
// TODO Auto-generated method stub
int num01 = 15;
long lyNum01 = 20;
byte byNum01 = 0;
//자동 형변환
/* 오른쪽 걸 왼쪽으로 넣는다 즉, (int=약2억 / long=2억 훨배 초과)
* 가능
*/
lyNum01 = num01;
//강제 형변환
/* 오른쪽 걸 왼쪽으로 넣는다 즉, (int=약2억 / byte=약 127이하)
* 불가능 하므로 (byte)를 기재하여 byte로 바꾸어준다
*/
byNum01 = (byte)num01;
int num02 = 130;
byte byNum02 = 0;
byNum02 = (byte)num02;
}
}
✏️ 자동 형변환 / 강제 형변환 예시2 (정수 / 단일문자)
package exam03;
public class ChangeCharExam02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
char ch = 'E';
int num = 90;
int chToNum = 0;
char intToCh = ' ';
//공백에 스페이스 넣어야함
// int 와 char는 자동형변환
// char --> int 로 변경할때는 자동형변환 가능
chToNum = ch;
// int --> char 변경할 때는 강제형변환
// int(약 20억)가 char보다 큼 (int인 num을 char로 강제형변환 시켜줌)
intToCh = (char)num;
System.out.println(chToNum);
System.out.println(intToCh);
//결과 : 'E'의 ASCII 코드 값인 69가 chToNum에 저장
//결과 : num을 강제로(char) 형변환 . ASCII 코드에서 90에 해당하는 문자,'Z'가 표기
}
🔰tip. 이클립스 한 줄 복사 : Ctrl + alt + downarrow
'🟪 Backend-Java' 카테고리의 다른 글
1-3. 깃허브 데스크탑 기본 사용법 + 자바 파일 배포 + 마크다운방법 (0) | 2024.06.30 |
---|---|
1-2. 자바 개발 환경설정 : JAVA JDK,Vscode + 컴파일 된 코드 실행하기 (0) | 2024.06.29 |
3. 자바 학습 셋팅 및 자바 변수 (자바 학습용 파일 초반 셋팅/변수 특징/데이터 타입 / 이클립스 콘솔 출력) (0) | 2024.06.23 |
2. 자바 언어의 구성 : Hello Java!/코드 프로세스/자바 주석의 종류 (0) | 2024.06.23 |
1. 자바 기초 지식 & 개발 환경설정 : JAVA JDK,Eclipse (0) | 2024.06.23 |