JAVA

[JAVA] JAVA 기본 문법 - 변수

sagecode 2024. 11. 19. 20:07

 

내가 "혼자 공부하는 자바" 라는 책을 읽으면서 공부한 JAVA 문법에 대해서 잘 모르는 부분들을 정리해 보았다


1. 변수

A. 타입변환 : 데이터 타입을 다른 데이터 타입으로 변화하는 것

 

기본 타입을 허용 범위 크기순으로 정리하면 다음과 같다.

byte < short < int < long < float < double

 

  • 자동 타입 변환 : 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생
byte byteValue = 10;
int intValue = byteValue; // 자동 타입 변환됨

int 타입이 byte 타입보다 허용 범위가 더 크기 때문에 자동 타입 변환이 일어납니다.

char charValue = 'A'
int intValue = charValue; // 65가 저장됨

char 타입의 경우 int 타입으로 자동 타입 변환되면 유니코드 값이 int 타입에 저장됩니다.

 

  • 강제 타입 변환 : 큰 허용 범위 타입을 작은 허용 범위 타입으로 강제로 나눠서 저장하는 것
int intValue = 10;
byte byteValue = (byte) intValue; // 강제 타입 변환 성공

int 타입은 byte 타입보다 더 큰 허용 범위를 가집니다. 하지만 (byte) 캐스팅 연산자를 사용해서 byte 타입으로 강제 변환 가능합니다.

 

int intValue = 5000;
byte byteValue = (byte) intValue; // 강제 타입 변환 실패

byte 범위에 해당하지 않는 값이 들어오게되면 (byte의 경우 -128 ~127) 컴파일 에러가 발생합니다.

 

double doubleValue = 3.14
int intValue = (int) doubleValue; // intValue는 정수 부분인 3만 저장

실수 타입은 정수 타입으로 자동 변환되지 않기 때문에, 이 경우 강제 타입 변환 실행시 소수점 이하 부분은 버려지고, 정수 부분만 저장됩니다.

 

B. 변수값 출력

  • printf() : 전체 출력 자릿수와 소수 자릿수를 제한할 수 있다.
    • %와 conversion(변환문자)은 필수로 작성하고 그 외의 항목은 모두 생략가능
    • %는 형식 문자열의 시작을 뜻하고, conversion은 제공하는 값의 타입에 따라 d(정수), f(실수), s(문자열)를 입력합니다.
형식화된 문자열 설명 출력형태
정수 %d
%6d
%-6d
%06d
정수
6자리 정수. 왼쪽 빈 자리 공백
6자리 정수. 오른쪽 빈 자리 공백
6자리 정수. 왼쪽 빈 자리 0 채움
123
___123
123___
000123
실수 %10.2f
%-10.2f
%010.2f
소수점 이상 7자리, 소수점 이하 2자리. 왼쪽 빈 자리 공백
소수점 이상 7자리, 소수점 이하 2자리. 오른쪽 빈 자리 공백
소수점 이상 7자리, 소수점 이하 2자리. 왼쪽 빈 자리 0 채움
____123.45
123.45____
0000123.45
문자열 %s
%6s
%-6s
문자열
6자리 문자열. 왼쪽 빈 자리 공백
6자리 문자열. 오른쪽 빈 자리 공백
abc
___abc
abc___
특수문자 \t
\n
%%
탭(tab)
줄 바꿈
%


%