[Java] 변수와 자료형

2 분 소요

변수 선언하여 사용하기

1
2
3
int level;
level = 10;
System.out.println(level)

변수 초기화하기

1
int level = 10;

자료형

자바는 기본자료형과 참조 자료형을 제공하는데, 기본 자료형은 자바 라이브러리에서 기본으로 제공하며, 얼마만큼의 메모리를 어떻게 사용할 것인지가 이미 정해져있다.

바이트 정수형 문자형 실수형 논리형
1바이트 byte -   boolean
2바이트 short char - -
4바이트 int - float -
8바이트 long - double -

다른 자료형은 모두 다른 언어와 동일한데,
long을 사용할때의 한가지 주의 사항이 있다.

1
2
3
int num1 = 12345678900;

>>> integer number too large

num1의 경우는 int가 표현가능한 범위를 넘어서서 오류가 난다고 하지만,
num2의 경우는 long 사용하였는데도 왜 오류가 나는 것일까?

이는 자바가 모든 정수를 기본적으로 int를 사용하여 처리하기 때문이다.
즉 숫자 12345678900이 들어오면 우선 int로 처리하기 때문에, 숫자뒤에 L을 붙여 long형으로 이 숫자를 처리하도록 컴파일러에게 알려주어야 한다.

1
long num = 12345678900L;

문자 자료형 선언하기

1
char mychar = 'A'

문자를 변수에 대입하면 문자 그대로 저장되는 것이 아니라
그 문자에 해당하는 정수 값(아스키코드 값)이 저장된다.

따라서 아래와 같이 아스키코드를 대입하여도 문자를 대입한 것과 동일하게 인식한다.

1
2
3
4
5
6
7
8
char ch1 = 'A';
char ch2 = 65;

System.out.println(ch1);
System.out.println(ch2);

>>> A
>>> A

반대로 출력할때 int를 표기해주면, 씌워주면 문자에 해당하는 아스키코드값을 출력한다.

1
2
3
System.out.println((int)ch1)

>>> 65

자료형 없이 변수 선언하기

var를 사용하여 변수를 선언하면 자료형을 정확히 명시하지 않고도 변수에 대입되는
값에따라 컴파일러가 자료형을 추측한다.

1
2
3
var num = 10;
var dNum = 10.0;
var str = "hello"

상수와 리터럴

자바에서 상수를 선언하고 싶다면, final을 사용하여 선언한다.

1
2
final double PI = 3.14;
final int MAX_NUM = 100;

상수는 변하지 않기 떄문에 선언과 동시에 초기화 하는 것이 좋다.

형 변환

정수와 실수는 컴퓨터 내부에서 표현되는 방식이 전혀 다르다.
따라서 정수와 실수를 더한다고 할 땐 그대로 연산을 수행 할 수 없고, 하나의 자료형으로
통일 후에 연산해야 한다. 이때 형 변환(type conversion)이 필요하다.

1
2
int n = 10;
double dnum = n;

위 처럼 변수 n은 int형이고 dnum은 double형이다.
형 변환이란 이렇게 변수의 자료형을 같게 해주는 것을 말한다.

형 변환은 크게 묵시적 형변환(자동 형 변환)과 명시적 형 변환(강제 형 변환)
두가지가 있는데, 형 변환의 기본원칙은 다음과 같다.

  • 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어진다
  • 덜 정밀한 자료형에서 더 정밀한 자료형으로 형 변환은 자동으로 이루어진다

따라서 이 반대로 강제적 형 변환을 하게 되면, 자료 손실이 발생 할 수가 있다.

묵시적 형 변환

1
2
int iNum = 20;
float fNum = iNum

명시적 형 변환

강제로 형 변환하려면 바꾸고자 하는 타입을 괄호로 명시해주어야 한다.

1
2
int iNum = 20;
byte bNum = (byte)iNum

카테고리:

업데이트:

댓글남기기