[JAVA] 변수와 자료형
변수란?
- 프로그래밍에서 변하는 값
- 값을 저장하는 공간
- 변수를 사용하기 위해 자료형(어떤 형태의 자료)를 저장할 것인지 정해야 함.
ex)
int level; int는 자료형, level는 변수이름
level = 10; 값 10을 level 변수에 대입
int level = 10; level 변수 선언과 동시에 값을 대입 (초기화)
- 변수 이름을 정할 땐 카멜 표기법(중간에 튀어나온 대문자)이 가장 보기 좋음.
변수가 저장되는 공간의 특성
1. 변수의 메모리
- 변수는 컴퓨터내부의 메모리 공간에 저장
- 메모리는 프로그램이 실행되는 작업 공간
ex) int level =10; 4바이트(int형) 크기의 메모리 공간 이름(변수 이름)은 level이고 이 공간에 값 10을 넣음
2. 자료형 종류
정수형 | 문자형 | 실수형 | 논리형 | |
1바이트 | byte | boolean | ||
2바이트 | short | shar | ||
4바이트 | int | float | ||
8바이트 | long | double |
- 정수형
양수, 음수, 0을 나타내는 데 사용하는 자료형
1) byte
- 1바이트는 8비트
- 바이트 단위의 정보를 저장하거나 통신할 떄 주로 사용
- 표현 할 수 있는 수의 범위는 -128~127
2) short
- 2바이트로 정구를 표현함
- 표현 할 수 있는 수의 범위는 -2,147,483,638~2,147,483,647
* byte와 short를 연산할 때 int 형으로 변환된 후 연산
3) long
- 자바에소 정수를 표현하는 가장 큰 단위
- int 형을 범위를 넘을 때 사용
- int를 표현할 수 있는 범위를 넘어갔을 때 뒤에 L를 추가해야 함
ex) long num = 12345678900L;
- 문자 자료형
1) 아스키코드(영문자, 숫자, 특수문자 둥 나타내는 문자 세트)는 1바이트만 사용
2) 유니코드(각 언어의 표준 인코딩을 정의해 놓은 것) 2바이트 이상 사용
유니코드 표현하는 인코딩 방법
- UTF-8
각 문자마다 1바이트에서 4바이트까지 사용하여 문자를 표현
메모리 낭비가 적고 전송속도가 빨라 인터넷에서 많이 사용
- UTF-16
자바의 기본 인코딩 방식은 모든 문자를 2바이트로 표현
문자형은 작음따옴표
문자열은 큰 따옴표
문자열 끝에는 널문자( \0) 붙어있음
ex) char myChar = 'A';
- 실수 자료형
1) 부동 소수점 방식
- 지수와 기수를 구분해서 표현하는 방식
- 오차를 감수하고 더 넓은 범위의 실수 값을 표현하기 위해 사용함
2) float
- 부호 1비트, 지수부 8비트, 가수부 23비트로 총 32비트(4바이트) 사용
- 뒤에 f 붙어야 함
ex) float fnum =3.15F;
3) double
- 부호 1비트, 지수부 11비트, 가수부 52비트 총 64비트(8바이트) 사용
- 기본으로 사용
- 정밀하게 실수로 표현
- 논리 자료형
어떤 변수의 참, 거짓의 값을 나타내는 데 사용
1) boolean형
- 참과 거짓으로 나타냄
- 1바이트로 값을 저장
- 자료형 없이 변수 선언하기 (자바 10부터 생긴 문법)
지역 변수 자료형 추론
- 변수에 대입되는 자료를 보고 컴파일러가 추측하여 알 수 있음
- 한번 선언한 자료형 변수를 다른 자료형으로 사용할 수 없음
- var로 자료형 없이 지역변수(프로그램의 {}내에서 사용할 수 있는 변수)만 가능
ex)
var num = 10;
var dNum = 10.0;
var str = "hello";
int num =10;
double dNum = 10.0;
String str = "hello";
- 상수 자료형
- 변하지 않는 값
ex) final double PI =3.14;
final로 선언된 상수는 다른 방식을 대입할 수 없음
- 리터럴
- 프로그램에서 사용하는 모든 숫자, 값, 논리값
- 리터럴에 해당되는 값은 특정 메모리 공간인 상수 풀에 있음
- 필요한 경우 상수 풀에서 가져와도 됨
ex) 10, 3.14 , 'A', true
- 형변환
- 자료형은 각각 사용하는 메모리 크기와 방식 다름
- 서로 다른 자료형의 값이 대입되는 겨우 형 변환이 일어남
1) 묵시적 형변환
작은 수에서 큰 수로 덜 정밀한 수에서 더 정밀한 수로 대입되는 경우
2) 묵시적 형 변환의 반대의 경우
변환되는 자료형을 명시해야 함
자료의 손실이 발생할 수 있음