목표
자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.
목차
1. 프리미티브 타입 종류와 값의 범위 그리고 기본 값
2. 프리미티브 타입과 레퍼런스 타입
3. 리터럴
4. 변수 선언 및 초기화하는 방법
5. 변수의 스코프와 라이프타임
6. 타입 변환, 캐스팅 그리고 타입 프로모션
7. 1차 및 2차 배열 선언하기
8. 타입 추론, var
1. 프리미티브 타입 종류와 값의 범위 그리고 기본 값
타입 이름 | 값의 범위 | 기본 값 | 크기 | |
정수형 | byte | -128~127 | 0 | 1byte |
short | -32,768~32,767 | 0 | 2byte | |
int | -2,147,483,648~2,147,483,647 | 0 | 4byte | |
long | -9,223,372,036,854,775,808~9,223,372,036,854,775,807 | 0L | 8byte | |
실수형 | float | (3.4 X 10-38)~(3.4 X 1038) 의 근사값 | 0.0F | 4byte |
double | (1.7 X 10-308)~(1.7 X 10308) 의 근사값 | 0.0 | 8byte | |
문자형 | char | 0~65,535 | '\u0000' | 2byte |
논리형 | boolean | true, false | false | 1byte |
2. 프리미티브 타입과 레퍼런스 타입
(1) 프리미티브 타입(primitive type, 기본형 타입)
- 값이 저장된다.
- 기본값이 있어 null이 없다.
Wrapper Class
프리미티브 타입에 null을 넣거나 객체로 다루기 위해 사용
기본형을 클래스로 감싼다.
인스턴스 생성으로 상속 및 재사용 가능
- 값이 할당되면서 JVM의 Runtime Data 영역에서 스택에 값이 저장된다.
- 컴파일 에러
(2) 레퍼런스 타입(reference type, 참조형 타입)
- 프리미티브 타입을 제외한 나머지 자료형
- 주소값이 저장된다.
- null 초기화가 가능하다.
- heap 영역에 저장된다.
- 런타임 에러
- new 키워드를 사용해 객체를 생성
- 종류: Array, Enum, Class, Interface 등
3. 리터럴(Literal)
변하지 않는 데이터
상수(Constant) vs 리터럴(Literal)
상수는 변하지 않는 변수를 의미한다. 상수에는 숫자가 들어갈 수 있지만 객체도 들어갈 수 있다. (메모리 위치)
리터럴은 데이터 자체를 의미한다. (메모리 위치 안의 값)
4. 변수 선언 및 초기화하는 방법
// 변수 선언
Long a; // 타입 변수이름;
Long a, b, c; // 다중 변수 선언
// 변수 초기화
a = 1;
// 선언과 초기화
Long a = 1;
(1) 변수명 짓는 규칙
- 첫 글자는 문자, $, _ 이어야 하고, 숫자는 불가능
- 영어 대소문자 구분
- 첫 문자는 소문자로 쓰고 뒤에 붙는 단어는 대문자(helloJava)
- 길이 제한 없음
- 예약어 사용 불가
5. 변수의 스코프와 라이프타임
스코프(scope): 변수의 사용 범위. 해당 변수가 접근할 수 있는 변수, 객체, 함수의 집합
생명주기(life cycle): 변수가 메모리에 있는 기간
scope | life cycle | |
지역 변수(local variable) | 선언된 블록 내 | { } |
매개 변수(parameters) | 메소드 내 | 메소드 호출~메소드 종료 |
인스턴스 변수(instance variable) | 클래스 내, private가 아니면 참조 변수로 다른 클래스에서 사용 가능 | 개체 생성~객체를 참조하는 다른 변수가 없을 때 |
클래스 변수(class variable) | 클래스 내, private가 아니면 다른 클래스에서 사용 가능 | 클래스 호출~자바 프로그램 끝 |
6. 타입 변환, 캐스팅 그리고 타입 프로모션
타입 변환: 변수나 상수의 타입을 다른 타입으로 변환(같은 타입끼리만 연산이 가능하기 때문에 변환을 한다.)
프리미티브 타입에서 캐스팅과 프로모션이 발생
(1) 프로모션(자동/묵시적 형 변환): 작은 데이터 타입 → 큰 데이터 타입
프로그램 실행 중 자동으로 변환
(2) 캐스팅(명시적 형 변환): 큰 데이터 타입 → 작은 데이터 타입
데이터 타입을 적어서 변환
// 프로모션
byte byteA = 1
int intA = byteA
// 캐스팅
int intA = 1
byte byteA = (byte)intA
7. 1차 및 2차 배열 선언하기
(1) 1차원 배열
// 배열 선언
int[] arr;
int arr[];
// 초기화
int arr[];
arr = new int[5]; // 0으로 초기화 된다.
// 선언 및 초기화
int arr[] = new int[5];
int arr[] = {1, 2, 3};
int arr[] = new int[] {1, 2, 3};
(2) 2차원 배열
// 2차원 배열 선언
int[][] arr;
// 초기화
int[][] arr;
arr = new int[1][3];
// 선언 및 초기화
int[][] arr = new int[1][3];
int[][] arr2 = {{1, 2, 3}, {4, 5, 6}};
8. 타입 추론, var
변수의 타입을 명시하지 않아도 컴파일러가 대입된 리터럴로 변수의 타입을 추론한다.
- 지역변수이면서 선언과 동시에 초기화가 필수
- null 값 사용 불가
- java10 이상에서 지원
// 타입 명시
String str = "Hello Java";
// 타입 추론
var str = "Hello Java";
'자바 스터디' 카테고리의 다른 글
4주차 선택 과제 0. JUnit 5 학습 (0) | 2022.05.19 |
---|---|
4주차 과제: 제어문 (0) | 2022.05.19 |
3주차 과제: 연산자 (0) | 2022.05.18 |
1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. (0) | 2022.05.16 |
자바 스터디 시작 (0) | 2022.05.16 |