2. 자바 데이터 타입, 변수 그리고 배열

2020. 11. 25. 14:33Java

목표

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

학습할 것

  • 프리미티브 타입 종류와 값의 범위 그리고 기본 값
  • 프리미티브 타입과 레퍼런스 타입
  • 리터럴
  • 변수 선언 및 초기화하는 방법
  • 변수의 스코프와 라이프타임
  • 타입 변환, 캐스팅 그리고 타입 프로모션
  • 1차 및 2차 배열 선언하기
  • 타입 추론, var

1. 프리미티브 타입 종류와 값의 범위 그리고 기본 값

  • 실제 값이 저장되는 공간으로 Stack 메모리 공간에 저장되며 범위를 벗어날 경우 컴파일 에러가 발생한다.
  • 객체가 타입이 아니고, 기본값이 있어서 Null 이 존재하지 않는다.
  • 기본형 타입에 Null 을 넣고 싶다면 Wrapper Class 를 사용해야 한다.
  Type Default value Size Range of Values
Integer byte 0 1 byte -2^7 ~ 2^7-1 (-128 ~ 127)
short 0 2 byte -2^15 ~ 2^15-1 (-32768 ~ 32767)
int (default) 0 4 byte -2^31 ~ 2^31-1 (-2147483648 ~ 2147483647)
long 0 8 byte -2^63 ~ 2^63-1 (-9223372036854775808 ~ 9223372036854775807)
Floating-Point float 0.0 4 byte 소수점 7 자리까지
double (default) 0.0 8 byte 소수점 16 자리까지
Char char \u0000 2 byte (Unicode)  0 ~ 65,535
Bool boolean false 1 byte  true, false

 

 


2. 프리미티브 타입과 레퍼런스 타입

  • 기본형 타입을 제외한 타입들이 모두 레퍼런스 타입이다.
  • 프리미티브 타입은 변수의 실제값을 메모리에 직접 저장한다.
  • 레퍼런스 타입은 객체의 주소를 저장한다. (GC 의 관리 대상) 
  • ex) Class, Interface, Array, enum, Integer, String, etc ...
  • 프리미티브 타입과 달리 스택영역에는 변수의 이름만 저장하고 객체의 주소를 힙영역에 저장하여 포인터로 가르킨다.

 

 


3. 리터럴

  • 데이터 그 자체를 의미한다. 변수에 넣는 변하지 않는 데이터를 의미한다.
  • 프로그램에서 직접 표현한 값이다.
  • 소스 코드의 고정된 값을 대표하는 용어이다.
  • 정수, 실수, 문자, 논리, 문자열 리터럴이 존재한다.

 

 


4. 변수 선언 및 초기화하는 방법

  • 변수란 값을 저장할 수 있는 메모리 공간에 붙여진 이름이다.
  • 변수를 선언하면 메모리 공간이 할당되고 할당된 메모리 공간에 이름이 붙는다.
  • 변수를 선언하고 값을 저장하는 것을 변수 초기화라고 한다.
  • 변수, 배열을 선언하거나 메모리를 할당하면 쓰레기 값이 다시 사용되지 않도록 반드시 초기화해야 한다.

 

 


5. 변수의 스코프와 라이프타임

 

  • 인스턴스 변수
    • Scope: throughout the class except in static methods
    • Lifetime: until the object stays in memory

 

  • 클래스 (스태틱) 변수
    • Scope: throughout the class
    • Lifetime: until the end of the program or as long as the class is loaded in memory 

 

  • 지역 (로컬) 변수
    • Scope: within the block in which it is declared
    • Lifetime: until the control leaves the block in which it is declared

 

 


6. 타입변환, 캐스팅 그리고 타입 프로모션

  • 타입캐스팅이란 프리미티브 타입으로 선언한 변수메모리에 다른 유형의 데이터를 할당하는 경우를 말한다.
  • 타입 프로모션이란 크기가 더 작은 자료형을 더 큰 자료형에 대입할 때, 자동으로 작은 자료형이 큰 자료형으로 변환되는 현상이다.
  • 클래스에도 타입 변환이 존재한다.
  • 기본적으로 클래스 타입들은 변환이 불가능하지만, 다형성이라는 성질을 통해서 타입 변환이 가능하다.

 

 


7. 1차 및 2차 배열 선언하기

  • 변수는 하나의 데이터를 저장하지만, 배열은 여러개의 데이터들을 인덱스 구조에 저장한다.
  • 배열의 길이는 한 번 생성하면 줄이거나 늘일 수 없고 같은 타입들만이 배열의 원소로 사용된다.
int[] a = { 1, 2, 3 };
int[][] b = {{1, 2, 3}, {3, 4, 5}, {5, 6, 7}}; 

 

 


8. 타입 추론, var

  • 타입 추론이란 타입이 안 정해진 변수 타입을 컴파일러가 유추하는 기능이다.
  • var 는 자바 10부터 추가되었다.
  • 지역변수이면서 선언과 동시에 초기화가 반드시 되어야한다.
var msg = "Hello, World !";

 

 

 

 


※ 출처

velog.io/@roeniss/자바-기초지식-정리#2주차---데이터-타입

drinkcoldbrew.tistory.com/2

www.notion.so/2-00ffb2aeb41d450aa446675b8a9e91d5

 

* 스터디

github.com/whiteship/live-study/issues/2

'Java' 카테고리의 다른 글

4. 제어문  (0) 2020.12.04
3. 연산자  (0) 2020.11.28
1. JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가  (0) 2020.11.11
BufferedReader , BufferedWriter  (0) 2020.08.28
java - 14 ) 컬렉션 프레임워크  (2) 2020.08.28