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

ahnjs·2022년 5월 1일
0
post-thumbnail

목표

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

학습내용

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

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

프리미티브(primitive) 타입이란?

java에서 원시 타입이란 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입을 말한다.

종류와 값의 범위, 기본 값

imageimage

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

레퍼런스(Reference) 타입이란?

java에서 참조 타입이란 객체의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입을 말한다.

차이점

Primitive Type

  • primitive Type은 실제 데이터 값을 저장하는 타입이다.
  • primitive Type은 기본값이 있기 때문에 null이 존재하지 않는다.
  • primitive Type은 값이 할당되면서 JVM의 Runtime Data Area 영역 중 Stack영역에 값이 저장된다.
  • 값의 범위를 벗어나면 컴파일 에러가 발생한다.

Reference Type

  • 대표적으로는 class, interface, enum, array, String Type이 있다.
  • 원시타입을 제외한 모든 타입은 참조형 타입이다.
  • 빈 객체를 의미하는 null이 존재한다.
  • 값이 저장되어 있는 곳의 주소값을 저장하는 공간으로 Heap 영역에 저장된다.

리터럴

프로그램에서 직접 표현한 값으로 데이터 그 자체, 소스코드의 고정된 값을 말한다.
리터널의 종류에는 원시타입과 String이 있다.

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

변수 선언

자바에서 변수를 사용하기 위해서는 변수를 선언해야 한다. 변수를 선언하는 이유는 값을 저장하는 공간을 확보하겠다는 뜻이다. 정확히는 컴퓨터가 가진 메모리를 사용하겠다고 미리 컴퓨터에게 전달하는 작업이다.
변수를 선언하는 방법은 변수 타입과 변수명을 함께 작성한다.

String str

초기화(Initialize)

변수를 사용하려면 초기화를 해야한다. 선언한 후 값을 할당해주어야만 사용할 수 있다.

// 선언
String str

// 초기화
str = "str";

// 변수 선언 및 초기화
String str2 = "str";

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

  • 변수의 스코프란 변수에 대한 접근과 존재할 수 있는 영역을 의미한다.
  • 자바에서 스코프에 따른 변수의 종류에는 클래스변수(static 변수), 인스턴스 변수, 지역변수 3가지로 나뉜다.
  • 변수의 종류는 변수가 선언된 위치에 따라서 결정된다.
    image

라이프 타임

  • 인스턴스 변수 - 객체가 생성되고 객체가 메모리에서 살아있는 동안
  • 클래스 변수 - 클래스가 초기화되고 프로그램이 종료될때 까지
  • 지역 변수 - 변수 선언 이후부터 블록을 벗어날 때 까지

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

타입 변환이란?

어떠한 값이나 변수의 타입을 다른 타입으로 변경하는것을 말한다. 자바에서 타입 변환은 크게 묵시적 타입 변환(자동 타입 변환)과 명시적 타입 변환(강제 타입 변환)으로 나뉜다.

자동 형변환

  • 자동 형변환은 두 데이터 타입이 자동으로 변환되는 경우이다.
  • 더 작은 데이터 타입의 값을 더 큰 범위의 타입에 할당할 경우에 동작한다.

명시적 형변환

  • 명시적 형변환은 더 작은 범위의 타입에 더 큰 범위의 타입의 값을 할당하기 위해서는 반드시 명시적으로 형변환을 해주어야 한다.
  • 호환되지 않는 데이터 타입에도 사용할 수 있다.

캐스팅

  • 크기가 더 큰 자료형을 더 작은 자료형에 대입할 때, 자료형을 명시해서 강제로 집어 넣는 것을 말한다.
  • 이때 데이터 손실이 발생할 수 있다.

프로모션

  • 크기가 더 작은 자료형을 더 큰 자료형에 대입할 때 자동으로 작은 자료형이 큰 자료형으로 변환되는 현상이다.

1차 및 2차 배열 선언하기

1차 배열 선언

int[] arr = new int[3];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;

2차 배열 선언

int[][] arr = new int[2][2];
int[][] arr2 = {{11, 12}, {21, 22}};

타입 추론, var

  • 타입추론은 말 그대로 개발자가 변수의 타입을 명시적으로 작성하지 않아도 컴파일러가 알아서 변수의 타입을 대입된 리터럴로 추론하는 것이다.
  • var는 초기화값이 있는 지역변수로만 선언이 가능하다.

사용이유

  • var 키워드를 사용하면 변수의 이름에 더 집중할 수 있다.
  • var는 런타임 오버헤드가 없다
    : 컴파일 시점에서 var를 초기화된 값을 보고 추론하여 바이트코드에서 명시적으로 int는 int다, String은 String이다. 결정되어 있는 상태라 타입추론 변수를 읽을 때마다 타입을 알아내기 위한 연산을 하지 않는다. 그래서 var로 선언된 변수는 중간에 타입이 절대 변경되지 않는다.

특징

  • var는 초기화 없이 사용할 수 없다.
  • var 타입 변수에는 null이 들어갈 수 없다.
  • var 타입 변수는 지역변수에만 선언할 수 있다.
  • Lambda Expression에서는 명시적인 타입을 지정해줘야 한다.

ref

0개의 댓글