이론/자바 기초

Java 그게 뭐야? 5. 형변환

달거북씨 2022. 1. 26. 01:01

둘째날 공부 시작.

달거북씨는 국비 수업을 듣기 전 자바 기초를 배우기 위해 자바 수업을 듣고 있다. 방학특강이라 2주동안 5시간씩 듣는 수업. 국비수업은 하루종일 들어야 할텐데 5시간 수업만으로도 힘들어서 큰 일이다. 웹개발자 관련해서 이것저것 찾아보다가 이건 누가 더 책상 앞에 오래 앉아있는지 싸움이라고 그런 비슷한 말을 보았는데 맞는 말 같다. 

 


1. 형변환

강제 형변환

(자료형)값 > 형변환 연산자. 값의 자료형을 바꿔주는 역할

ex. (double)10 // 10.0 > 정수 10 앞에 (double)을 붙여주어 실수로 변경

 

 

자동 형변환

  정수     +     실수      =      실수

(4byte)       (8byte)          (8byte) > 크기가 더 큰 타입으로 출력된다.

작은 대야의 물을 큰 대야로 옮기는 것보다, 큰 대야의 물을 작은 대야로 옮길 때 물의 손실이 일어날 가능성이 크다. 따라서 손실이 일어날 가능성이 적도록 작은 byte에서 큰 byte로만 자동 형변환이 일어난다.

문자 + 정수 = 정수 > ex. 'A' + 5 = 70

정수, 실수, 문자 + 문자열 = 문자열 > ex. 10 + "" = "10" / '3' + "" = "3"

자료형 참조★

boolean | 참과 거짓 | 1byte

char | 문자 | 2byte

byte | 정수 | 1byte

short | 정수 | 2byte

int | 정수 | 4byte

long | 정수 | 8byte

float | 실수 | 4byte

double | 실수 | 8byte

String | 문자열 | ???

 

 

예제 1

실수double(8byte)를 정수int(4byte)로 형변환하기 위해선 강제형변환 필요.

정수int(4byte)를 문자char(2byte)로 형변환하기 위해선 강제형변환 필요.

문자char(2byte)는 정수int(4byte)로 자동형변환됨.

참고로, 자바에서 정수 연산은 int로 형변환해서 진행된다. 때문에 문자 'A'는 정수 65로 변환되어 계산되고, 문자 '5'는 53으로 변환되어 계산된다.

아스키 코드 소환★

A ~ Z : 65 ~ 90

a ~ z : 97 ~ 122

0 ~ 9 : 48 ~ 57

 

 

실습 1

 

 

예제 2

자료형에서 혼자 대문자로 시작하는 아이가 있었다. "String". 앞선 포스팅에서 언급했지만, 나머지 자료형이 기본형이라면 대문자로 시작하는 이 String은 클래스다. 형변환 시 기본형은 기본형끼리만, 클래스는 클래스끼리만 형변환이 가능하다. 따라서 문자열을 정수, 실수로 출력하기 위해 사용하는 메소드가 있다.

Integer.parseInt() : 문자열을 정수로 바꿔준다. // Integer(클래스).parseInt()(메소드)

Double.parseDouble() : 문자열을 실수로 바꿔준다. // Double(클래스).parseDouble()(메소드)

문자열을 문자로 바꿔주는 메소드는 조금 특별하다. 문자열 전체를 문자로 바꿔주는 것이 아닌, 문자열의 해당 인덱스만 문자로 출력한다. 문자는 한 글자이기 때문인듯하다.

charAt(index) : 문자열의 해당 인덱스를 문자로 출력하는 메소드

예제와 같이 char ch = sc.next().charAt(0); 라고 썼을 때, "헬로자바"라는 문자열의 0번 인덱스로 '헬'이 출력된다. 만약 char ch = sc.next().charAt(3); 이었다면 '바'가 출력됐을 것이다.

 


728x90