프로그래밍/JAVA

06 형변환(자동 형변환, 강제 형변환, 문자열 형변환)

윤지(●'◡'●) 2021. 3. 23. 22:41
반응형


01 형변환

형변환 이란, 변수 또는 리터럴의 타입을 다른 타입으로 변환하는 것이다.

연산은 기본적으로 같은 타입의 피연산자간에만 가능하다.

서로 다른 타입의 연산을 해야 하는 경우, 연산을 하기 전에 형변환을 통해 같은 타입으로 변환해줘야 한다.

 

02 자동 형변환

자동 형변환은 앞 항과 뒤 항의 형태에 따라 연산을 통해 자동으로 변환 시켜주며, 바이트값이 큰쪽으로 자동 변환된다.

 

1. 정수 (연산자) 실수 ----> 실수 

 

ex)   3    +       0.0     ---->  3.0
       3    *       1.0     ---->  3.0

 

2. 문자 (연산자) 정수 = 정수

 

코드

System.out.println('A' + 5);

결과

70

왜 결과 값이 70이 나왔을까?

 


컴퓨터는 문자를 읽을 수 없고 숫자로 인식하며, 이를 아스키코드 라고 한다.

 

⁂아스키 코드(ASCII)란?

컴퓨터는 기본적으로 0 또는 1 로써 이진수로 데이터를 저장하고 표현한다.

숫자로 문자를 표현하기 위해 특수문자, 숫자, 문자에 번호를 부여하여 컴퓨터에서 처리하기 쉽게 만드는 것으로

즉, 해당 문자를 숫자로 표현한 값이라고 볼 수 있다.

 

그렇기 때문에 위의 코드에서 'A'가 65로 표현되어 65+5의 값인 70이 나온것 이다

 

 

 

이렇게 많은 내용을 전부 외울 수 없기 때문에 많이 사용하는 3가지 아스키코드를 외우면 편하게 사용할 수 있다 :)

 

▪ 대문자 'A' : 65

▪ 소문자 'a' : 97

▪ 숫자 '0' : 48

 

위의 숫자에서 1씩 증감하면 다음 문자가 온다

 

ex: 'B' : 66, 'C' : 67, 'D' : 68, 'E' : 69....

     'b' : 98, 'c' : 99, 'd' : 100, 'e' : 101...

 

 

3. 정수, 실수, 문자 + 문자열 = 문자열

 

ex : System.out.println(10+"");  ---> "10"

 

03 강제 형변환

 

말 그대로 , 강제로 형변환을 해주는 것으로 자동 형 변환이 적용되지 않는 경우에는 수동으로 형 변환을 해야 하며,

이를 명시적(Explicit Conversion)이라고 한다. 강제 형변환은 형변환 연산자를 사용하여 데이터를 출력 해야한다.

 

(자료형) : 형변환 연산자
             ⁂ 형변환 연산자는 산술연산자 보다 우선순위가 높아, 산술보다 형변환이 먼저 실행된다 

                 이에대한 내용은 연산자의 우선순위를 알아야 하는데 다음 포스팅에 작성 하겠습니다 :)


(자료형)값 의 형식으로 사용한다.

 

코드

System.out.println((double)10/3);
System.out.println((char)('A' + 5));
System.out.println((int)10.2478);

결과

3.3333333333333335
F
10

 

04 문자열 형변환

 

문자열을 정수로 형변환 하기 위해서는 메소드를 이용해야한다.


Integer.paresInt("정수로된문자열")의 형식으로 사용되며, 통채로의 값을 정수로 바꾼다.

 

코드

Scanner sc = new Scanner(System.in);
System.out.print("첫번째 정수 : ");
int num1 = Integer.parseInt(sc.next());
System.out.print("두번째 정수 : ");
int num2 = Integer.parseInt(sc.next());
	
System.out.println(num1 + num2);

결과

첫번째 정수 : 10
두번째 정수 : 3
13

 

 

위의 내용을 활용하여 작성한 코드 (*/ω\*)

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("국어 점수를 입력하세요 : ");
		int kor = Integer.parseInt(sc.next());
		
		System.out.print("영어 점수를 입력하세요 : ");
		int eng = Integer.parseInt(sc.next());
		
		System.out.print("수학 점수를 입력하세요 : ");
		int mat = Integer.parseInt(sc.next());
		
		double avg = (double)(mat+kor+eng)/3;

		System.out.printf("당신의 평균점수는 %.2f점 입니다",avg);
		
	}

}

 

결과

국어 점수를 입력하세요 : 80
영어 점수를 입력하세요 : 78
수학 점수를 입력하세요 : 84
당신의 평균점수는 80.67점 입니다
반응형