[Java] 변수와 자료형
변수 선언하여 사용하기
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
댓글남기기