Java 02. 변수 - swkim0128/PARA GitHub Wiki
컴퓨터 언어에서 변수(variable)란, 값을 저장할 수 있는 메모리상의 공간을 의미한다. 변수의 값은 바뀔 수 있으며, 하나의 변수에는 단 하나의 값만을 저장할 수 있다.
변수를 사용하기 위해서는 먼저 변수를 선언해야 한다. 변수가 선언되면 메모리에 변수의 타입에 알맞은 크기의 저장공간이 확보되어, 값을 저장할 준비가 되는 것.
변수타입 변수이름;
변수를 선언한 후부터는 변수를 사용할 수 있으며, 변수를 사용하기에 앞서 적절한 값을 저장해주는 것이 필요하다. 이것을 변수의 초기화
라고 한다.
-
대소문자가 구분되며 길이에 제한이 없다.
True와 true는 서로 다른 것으로 간주
-
예약어를 사용해서는 안 된다.
true는 예약어라서 사용할 수 없지만, True는 가능하다.
-
숫자로 시작해서는 안 된다.
top10는 허용하지만, 7up은 허용되지 않는다.
-
특수문자는 '_'와 '$'만을 허용한다.
$harp은 허용되지만, $ #arp은 허용되지 않는다.
그 외 권장하는 규칙
- 클래스 읾의 첫 글자는 항상 대문자로 한다.
- 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
- 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.
모든 변수에는 타입(type)이 있으며, 변수의 타입 따라 저장할 수 있는 값의 종류와 범위가 달라진다.
변수의 타입은 크게 기본형과 참조형, 2가지로 나눌 수 있다. 기본형 변수는 실제 값을 저장하는 반면, 참조형 변수는 어떤 값이 저장되어 있는 주소를 값으로 갖는다.
모두 8개의 탑이 있으며, 크게 논리형, 문자형, 정수형, 실수형 4가지로 구분.
논리형 boolean을 제외한 나머지 7개의 타입은 서로 변환이 가능하기 때문에 연산도 가능하다.
boolean -
char
byte
short
int
long
float
double
false, true
u0000uffff (02^16 - 1, 0 ~ 65535
8bit, 1byte
16bit, 2byte
8bit, 1byte
16bit, 2byte
32bit, 4byte
64bit, 8byte
32bit, 4byte
64bit, 8byte
boolean형 변수에는 true와 false 중 하나를 저장할 수 있으며 기본값(default)은 false이다.
자바에서는 유니코드 문자 체계를 사용하기 때문에 크기가 2 byte이다.
char 형의 크기는 2 byte이므로 16진수로 0000부터 ffff까지, 문자를 표현하는데 65536개의 코드를 사용할 수 있다.
char형이나 short형은 크기가 모두 2 byte지만 범위가 다르기 때문에 같은 2진 표현이라 하더라도 실제로 의미하는 값은 다를 수 있다.
char형 변수에 저장되는 값은 부호없는 정수의 형태로 저장된다. 이 값은 해당문자의 유니코드인데 변수에 문자를 저장하는 것 같지만 실제로는 정수값(유니코드)이 저장되는 것이다. 즉 모든 데이터는 숫자로 저장된다.
정수형에는 모두 4개의 자료형이 있으며 젖아할 수 있는 값의 범위가 서로 다르다.
기본 자료형은 int이다.
JVM의 피연산자 스택이 피연산자를 4byte단위로 저장하기 때문에 4 byte보다 작은 자료형(byte, short)의 값을 계산할 때는 4 byte로 변환하여 연산이 수행된다.
10진수 외에도 16진수 또는 8진수로 표현된 정수를 변수에 저장할 수 있다.
16진수라는 것을 표시하기 위해서 리터럴 앞에 접두사 '0x' 또는 '0X'를, 8진수의 경우에는 '0'을 붙인다.
실수는 정수와 달리 부동소수점(floating-point) 방식으로 저장된다.
float형 리터럴에는 접미사 f가 사용되고, double형 리터럴에는 d가 사용된다.
형변환이란, 변수 또는 리터럴의 타입을 다른 타입으로 변환하는 것이다.
기본형과 참조형 모두 형변환이 가능하지만, 기본형과 참조형 사이에는 형변환이 성립되지 않는다. 기본형은 기본형으로만 참조형은 참조형으로만 형변환이 가능하다.
기본 타입과 참조형의 형변환을 위해서 Wrapper 클래스 사용
int score = (int)85.4; // double 형 값을 int 형으로 변환하여 저장.
boolean을 제외한 나머지 7개의 기본형 간에는 서로 형변환이 가능.
범위가 큰 자료형에서 범위가 작은 자료형으로의 변환은 값 손실이 발생할 수 있다.
원칙적으로는 모든 형변환에 캐스트연산자를 이용한 형변환이 이루어져야 하지만,
(묵시적 형 변환) 작은 자료형에서 큰자료형의 변환은 캐스트 연산자를 생략하는 것을 허용한다.
(명시적 형 변환) 반면에 큰 자료형에서 작은 자료형으로의 형변환은 캐스트 연산자를 사용해야 함.