● 형변환
1. 자동적 형변환(묵시적)
2. 강제형변환(면시적)
● 자동 형변환(묵시적)
더 큰 공간의 자료형에 데이터를 대입할때 자동으로 형변환을 해주는 과정
250개 6만개 21억개
bit < byte < short < int < long< float < double *외울것!!
char
▶ A자료형 = B자료형 : A자료형에 B자료형 데이터를 대입해라 > 자료형이 다르면 문제 발생 !!!
A 자료형 : byte : 1byte = 8bit
B 자료형 : short : 2byte = 16bit
8개의 공간에 16개의 공간을 넣을 수 있냐? > 못 넣습니다. > 데이터 손실이 발생 > 컴파일러가 에러 처리
▶ A자료형 = B자료형 : A자료형에 B자료형 데이터를 대입해라
A 자료형 : short : 2byte = 16bit
B 자료형 : byte : 1byte = 8bit
16개의 공간에 8개의 공간을 넣을 수 있냐? > 넣습니다 > 컴파일러가 자동 형변환
● 강제 형변환(명시적)
문제 발생했던 상황에서 데이터의 손실과 상관없이 형변환을 진행하는 방법
() : 변환할 타입작성, 타입캐스트 연산자
Abyte = (byte) Bshort // Bshort를 byte형으로 변환해라
▶ 문자형 > 숫자형 자료형으로 바꿀때
자료형 변수명 = 바꿀자료형의래퍼.parse자료형();
int num = Integer.parselnt("10");
▶ 숫자형 > 문자형 자료형으로 바꿀때
String 변수명 = String.valueOf();
String 변수명 = 바뀔대상자료형의래퍼.toString();
String 변수명 = " " + 값;
String str = Ingeger.toString(10);
▶ 숫자형 > 숫자형 자료형으로 바꿀때
() 타입 캐스트(type cast)
● 연산식에서의 자동 타입변환
▶ 덧셈
1. String 이 덧셈 연산에 사용되면 결과는 String이 나온다
2. 연산 자리를 바꾸어도 연산 타입 동일하다
3. char는 int로 생각한다
System.out.println("---int + ?---");
System.out.println(10 + 10); // int + int --> int
System.out.println(10 + 3.0); // int + double --> double
// char는 아스키코드에 해당하는 숫자로 생각함 (컴퓨터는 문자를 저장할때 숫자로 저장함)
System.out.println(10 + 'a'); // int + char --> int
System.out.println(10 + "안녕"); // int + String --> Sting, 연결((10안녕))
System.out.println("---double + ?---");
System.out.println(3.0 + 1); // double + int --> double
System.out.println(1.5 + 1.5); // double + double --> double
System.out.println(1.0 + 'a'); // double + char --> double
System.out.println(3.14 + "안녕"); // double + String --> String, 연결
System.out.println("---char + ?---");
System.out.println('a' + 10); // char + int --> int
System.out.println('a' +1.0); // char + double --> double
System.out.println('a' + 'a'); // char + char --> int
System.out.println('a' + "안녕"); // char + String --> String, 연결
System.out.println("---String + ?---");
System.out.println("안녕" + 10); //String + int ---> String, 연결
System.out.println("안녕" + 1.0); //String + double ---> String, 연결
System.out.println("안녕" + 'a'); //String + char ---> String, 연결
System.out.println("안녕" + "안녕");//String + String ---> String, 연결
//----------------------------------------------------------------------------
System.out.println(10 + "" + 20 + 7); //10207
System.out.println(10 + 3 + "" + 5); //135
System.out.println('a' + 5 + "" + 3); //1023
▶ 뺄셈
1. String 타입은 뺄셈 불가능
2. char는 int로 생각
System.out.println(10 - 2); // int - int --> int
System.out.println(10 - 1.0); // int - double --> double
System.out.println(100 - 'a'); // int - char --> int
// System.out.println(100 - "안녕"); // int - String --> 오류
System.out.println(11.0 - 11.0); // double - double --> double
System.out.println(10.0 - 'a'); // double - char --> double
System.out.println('b' - 'a'); // char - char --> int
▶ 나눗셈 연산자
1. String은 나눗셈 불가
2. char는 inf로 생각
System.out.println(10 / 3); // int / int --> int (몫을 계산한다)
System.out.println(10 / 2.0); // int / double --> double
System.out.println(100 / 'a'); // int / char --> int (몫을 계산한다)
System.out.println(10.0 / 10.0); // double / double --> double
System.out.println(10.0 / 'a'); // double / char --> double
System.out.println('b' / 'a'); //char / char --> int (몫을 계산한다)
// % : 나머지 연산자
System.out.println(10 % 3); // 1
▶ 곱셈 연산자
1. String은 나눗셈 불가
2. char는 inf로 생각
System.out.println(10 * 10); // int * int --> int
System.out.println(0 * 5.1); // int * double --> double
System.out.println(2 * 'a'); // int * char --> int
System.out.println(1.0 * 0.0); // double * double --> double
System.out.println(1.0 * 'a'); // double * char --> double
System.out.println('a' * 'a'); // char * char --> int
'Programming > Java + Spring' 카테고리의 다른 글
[Spring] 게시판 실습 / 준비 단계 (0) | 2022.09.27 |
---|---|
[Spring] DI 실습 (0) | 2022.09.26 |
[Spring] DI 의존성 주입 (0) | 2022.09.26 |
[Spring] 프레임워크 (0) | 2022.09.26 |
[Java] 변수 (0) | 2022.07.17 |
댓글