목표
자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.
학습할 것
- 프리미티브 타입 종류와 값의 범위 그리고 기본 값
- 프리미티브 타입과 레퍼런스 타입
- 리터럴
- 변수 선언 및 초기화하는 방법
- 변수의 스코프와 라이프타임
- 타입 변환, 캐스팅 그리고 타입 프로모션
- 1차 및 2차 배열 선언하기
- 타입 추론, var
1. 프리미티브 타입 종류와 값의 범위 그리고 기본 값
TYPE | 프리미티브타입 | 메모리 크기 | 기본값 | 값의 범위 | |
수치 타입 | 정수형 | byte | 1 byte | 0 | -128 ~ 127 |
short | 2 byte | 0 | -32,768 ~ 32.767 | ||
int | 4 byte | 0 | -2,147,483,648 ~ 2,147,483,647 | ||
long | 8 byte | 0L | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | ||
문자형 | char | 2 byte (유니코드) |
'\u0000' | (3.4 * 10^-38) ~ (3.4 * 10^38)의 근사값 | |
실수형 | float | 4 byte | 0.0F | (1.7 * 10^-308) ~ (1.7 * 10^308)의 근사값 | |
double | 8 byte | 0.0 | 0 ~ 65,535 | ||
블린 타입 | 논리형 | boolean | 1 byte | false | true, false |
2. 프리미티브 타입과 레퍼런스 타입
프리미티비 타입(Primitive Tpye(원시 자료형))
- 기본값이 있기 때문에 Null값이 존재하지 않는다.
- 실제 값을 저장하는 공간으로 스택(Stack) 메모리에 저장된다.
- 컴파일 시점에 담을 수 있는 크기를 담으면 컴파일 에러가 발생한다.
레퍼런스 타입(Reference Type(참조 자료형)
레퍼런스 타입 | 메모리 크기 | 기본값 | 예시 |
배열(Array) | 4 byte (객체의 주소값) | Null | int[] arr = New int[2]; |
열거(Enumeration) | 4 byte (객체의 주소값) | Null | |
클래스(Class) | 4 byte (객체의 주소값) | Null | Test testCode = new Test(); |
인터페이스(Interface) | 4 byte (객체의 주소값) | Null |
3. 리터럴(Literal)
- 소스코드의 고정된 값을 뜻하는 용어
- 변수의 값이 변하지 않는 데이터(메모리에 저장되는 값)
ex) 정수 리터럴, 실수 리터럴, 문자 리터럴, 논리 리터럴, 문자열 리터럴
4. 변수 선언 및 초기화하는 방법
변수 선언
- 데이터 타입 + 변수명;
int i;
double d;
char c1, c2;
변수 초기화
- 선언한 변수에 실제 값을 넣는다.
1. 선언한 다음 초기화
int i;
i = 10;
2. 선언과 동시에 초기화
String str = "Hello Java";
5. 변수의 스코프와 라이프타임
- Scope : 프로그램에서 사용되는 변수가 그 이름의 효력을 나타낼 수 있는 범위 (자바의 경우 중괄호{ })
- Lifetime : 변수가 값을 저장한 기억 장소를 할당 받은 때부터 기억 장소가 더 이상 그 변수값을 의미하지 않을 때까지의 시간
http://comsori.daegu.ac.kr/lectures/pl2002/Chap7.pdf
6. 타입 변환, 캐스팅 그리고 타입 프로모션
- 타입 변환 : 크기가 다른 타입으로 저장할때 사용한다. 캐스팅타입프로모션이 있다.
- 캐스팅 : 크기가 큰 타입이 크기가 작은 타입으로 저장될때 사용한다. 실제 데이터 앞에 데이터 자료형을 붙여주면 캐스팅이 된다.
int i = (int)1.0;
- 타입 프로모션 : 타입 프로모션은 크기가 작은 타입이 크기가 큰 타입으로 저장될 때 자동으로 발생한다.
타입별 크기 순서 : byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
7. 1차 및 2차 배열 선언하기
// 배열 선언
int [] arr;
int arr[];
// 배열 생성후 초기화, 배열의 주소가 할당
int [] arrInt = new int[2];
String[] arrString = new String[2];
// 배열 선언후 나중에 초기화
int[] arr;
arr = new arr[2];
2차원 배열이란 배열의 배열이다.
int[][] array = new int[3][4];
2차원 배열에 값을 저장하는 방법
- 만약 array4[1] = 10 ; 이렇게 사용하면 오류!!
- array4[1] 은 또 다른 1차원 배열을 가리킬 수 있는 참조형 변수이기 때문에 값을 담을수는 없다.
ex) array4[0][0] = 10;
가변크기의 2차원 배열을 생성하는 방법
int[][] array5 = new int[3][];
// 위와 같이 선언하면 array5는 3개짜리 배열을 참조한다.
// 3개짜리 배열은 아직 참조하는 배열이 없다는 것을 의미.
array5[0] = new int[1]; //정수를 하나 담을 수 있는 배열을 생성해서 array5 의 0 번째 인덱스가 참조한다. array5[1] = new int[2]; //정수를 두개 담을 수 있는 배열을 생성해서 array5 의 1 번째 인덱스가 참조한다. array5[2] = new int[3]; //정수를 세개 담을 수 있는 배열을 생성해서 array5 의 2 번째 인덱스가 참조한다.
선언과 동시에 초기화하는 방법
int[][] array6 = {{1}, {2,3}, {4,5,6}}; //위와 같이 선언할 경우 array6[0][0] 는 1이다. array6[1][0]은 2이다.
programmers.co.kr/learn/courses/5/lessons/135
8. 타입 추론, var
- 타입추론 : 코드작성 당시 타입이 정해지지 않았지만, 컴파일러가 그 타입을 유추하는 것이다.
- var : Java 10부터 타입 추론을 지원하는 var 키워드가 추가되었다. local variable 이면서 선언과 동시에 initializer 가 필수적으로 요구된다.
velog.io/@bk_log/Java-%ED%83%80%EC%9E%85-%EC%B6%94%EB%A1%A0
'STUDY REVIEW > STUDY HALLE' 카테고리의 다른 글
3주차 과제: 연산자 (2) | 2020.11.27 |
---|---|
1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. (0) | 2020.11.24 |