본문 바로가기
Programming/Java + Spring

[Java] 형변환

by 콩king 2022. 7. 17.
● 형변환

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

댓글