본문 바로가기

STUDY REVIEW/STUDY HALLE

2주차 과제: 자바 데이터 타입, 변수 그리고 배열

목표

자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.

학습할 것

  • 프리미티브 타입 종류와 값의 범위 그리고 기본 값
  • 프리미티브 타입과 레퍼런스 타입
  • 리터럴
  • 변수 선언 및 초기화하는 방법
  • 변수의 스코프와 라이프타임
  • 타입 변환, 캐스팅 그리고 타입 프로모션
  • 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