변수

2023. 3. 15. 09:36Java/Java

1. 변수와 상수

1.1 변수란? (Variable)

- 단 하나의 값을 저장할 수 있는 메모리 공간

 

1.2 변수의 선언과 초기화

- 변수의 선언: int a; //a라는 이름의 변수를 int타입으로 선언

- 변수의 초기화: a = 23; //선언한 변수a를 23으로 초기화 (변수를 사용하기 전에 처음으로 값을 저장하는 것)

- 변수의 선언과 초기화: int b = 1; //선언과 초기화 한줄에

 

1.3 변수의 명명규칙

- 문자 길이 제한 없음

- 대소문자 구분 (True와 true는 다름)

- 클래스는 대문자, 변수와 메서드는 소문자, 상수는 대문자로 시작

- 예약어 사용불가 (True는 사용가능하나 true 사용불가)

- 숫자로 시작할 수 없음

- 특수문자 사용불가 ( _와 $ 제외 )

 

2. 변수의 타입

- 자료형(data type): 값의 종류에 따라 값이 저장될 공간의 크기저장형식을 정의한 것

- 자료형은 크게 기본형과 참조형으로 나누어진다

- 기본형과 참조형 

1) 기본형 변수 Primitive Data Type

계산을 위한 "실제 값"을 저장한다. (논리형, 문자형, 정수형, 실수형 타입)

2) 참조형 변수 Reference / Class  Data Type

객체의 "주소"를 저장한다 (기본형을 제외한 나머지 타입)

- 선언 방법: String str; //클래스이름 변수이름;

- 생성 방법: str = new String ();

- 선언 및 생성 방법: String str = new String();

- 선언 및 생성과 초기화 방법: String str = new String("Hello.");

 

2.1 기본형 종류

구분 1btye = 8bit 2btye 4btye 8btye
논리형 boolean      
문자형   char    
숫자-정수형 byte  short  int  long
숫자-실수형     float  double

 

2.2 상수와 리터럴

- 변수: 하나의 값을 저장하기 위한 공간, 수정 가능

- 상수: 값을 한 번만 저장할 수 있는 공간 (키워드 'final' 사용하여 정의, 나중에 값 수정하면 에러)

- 리터럴: 실제 값, 그 자체로 값을 의미하는 것, 변수에 저장하는 값 (등호 오른쪽에 있는 값)

 

- 리터럴의 타입

1) 실수 리터럴 - float, double

- 기본형은 double

- float는 숫자값 뒤에 F 또는 f을 표시

- double은 d (기본형이기 때문에 생략 가능)

2) 정수 리터럴 - byte, short, int, long

- 기본형은 int

- long은 숫자값 뒤에 L 또는 l을 표시 (접미사)

- 십진수는 숫자 그대로 사용, 이진수는 숫자 앞에 0b, 8진수는 0, 16진수는 0x 표시

3) 문자, 문자열 리터럴

- 문자 리터럴: 작은따옴표로 문자를 하나 감싼것 (char)

- 문자열 리터럴: 두 문자 이상은 큰따옴표로 감싸야한다 (String클래스로 선언)

4) 논리형 리터럴 - boolean

- True, False

 

3. 진법

 

4. 기본형

4.1 논리형 - boolean

- 1byte

- true 또는 false를 저장 (대소문자 구문 주의)

- 기본값은 false

- 다른 자료형으로 변환 불가

- 논리 구현에 주로 사용

 

4.2 문자형 - char

- 2byte

- 문자를 저장하기 위한 변수를 선언할 때 사용

- 단일 따옴표(')로 문자를 둘러싸서 저장하며 한 문자만 저장 가능

- 내부적으로는 부호없는 정수의 형태로 저장된다 ('A' -> 65)

- 유니코드 (16진수) 저장 가능. 아스키 코드와 호환, 0~127까지는 아스키코드와 동일

- 기본값은 '\u0000'

 

4.3 정수형 - byte, short, int, long

- byte(1) < short(2) < int(4) < long(8)

- 자바에서 모든 정수형은 부호있는 정수이므로 왼쪽의 첫번째 비트를 '부호 비트'로 사용한다

- n비트로 표현할 수 있는 정수의 개수: 2n

- n비트로 표현할 수 있는 부호있는 정수의 범위: 2n-1 ~ (2n-1 - 1)

- 기본값은 0

 

4.4 실수형 - float, double

- 기본값은 0.0

 

 

5. 형변환

5.1 형변환이란? (Casting)

- 형변환: 값의 타입을 다른 타입으로 변환하는 것

모든 변수와 리터럴에는 타입이 있는데 서로 다른 타입간의 연산을 수행하는 경우 타입을 일치시켜야만 한다.

- boolean을 제외한 나머지 7개 기본형은 서로 형변환이 가능하다

- 기본형과 참조형 사이의 변환은 불가

- 서로 다른 타입의 변수간의 연산은 형변환을 하는 것이 원칙이지만,

값의 범위가 작은 타입에서 큰 타입으로의 형변환은 자동으로 이루어지므로 생략 가능 (묵시적/자동 형변환)

 

5.2 형변환 방법

- (변환하고자하는타입) 피연산자

- 형변환하고자하는 변수나 리터럴의 앞에 변환하고자하는 타입을 형변환연산자인 괄호()와함께 붙여주면 된다

- 형변환연산자는 그저 피연산자의 값을 읽어서 지정된 타입으로 형변환하고 그 결과를 반환할 뿐이지

실제 변수의 값을 바꾸는것은 아니기때문에 피연산자의 값은 형변환후에도 아무런 변화가 없다.

 

5.3 자동 형변환

- 묵시적 형변환: 값의 범위가 작은 타입을 큰 타입으로 변환하는 경우 자동으로 형변환 되므로 생략 가능

- 명시적 형변환: 값의 범위가 큰 타입을 작은 타입으로 변환하는 경우 형변환 연산자 () 사용. 값 손실 발생 가능.

- 자동 형변환의 규칙: 기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환한다.

byte -> short / char -> int -> long -> float -> double

- 표현범위가 좁은 타입에서 넓은 타입으로 형변환하는 경우에는 잘리는 값이 없어 값 손실이 없으므로

두 타입 중에 표현범위가 더 넒은 쪽으로 형변환된다

- 예시) int형 + float형 연산 -> int형이 float형으로 변환되어 float + float 연산이 수행된다