2023. 3. 15. 09:36ㆍJava/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 연산이 수행된다