학습할 것

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

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


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


프리미티브(기본형) 타입

  • 자바 언어에 내장된 기본 유형으로 기본형 타입을 미리 정의하여 제공
  • 기본값이 있기 때문에 null이 존재하지 않음
  • 기본형 타입에 null을 넣고 싶다면 래퍼 클래스를 활용
  • 실제 값을 저장하는 공간으로 스택 메모리 영역에 저장
  • 각 데이터 타입의 데이터 범위를 벗어나면 컴파일 에러 발생함

레퍼런스(참조형) 타입

  • 기본형을 제외한 나머지 타입
  • 배열(array[]), 열거(enum), 클래스(class), 인터페이스(interface) 등
  • 참조 값(주소)를 가지는 자료형
  • 자바 API에서 제공되거나 프로그래머에 의해 만들어진 클래스를 자료형으로 선언하는 경우
  • 참조변수는 클래스 이름을 가지고 만들 수 있다.

기본형과 참조형의 차이점

기본형 변수 안에는 직접 값들을 넣을 수 있지만, 참조형은 변수 안에 값들을 저장하고 있는 객체를 가르키는 주소를 가지고 있습니다.

리터럴


리터럴은 데이터(값) 그 자체를 뜻한다. 즉, 변수에 넣는 변하지 않는 데이터를 의미함.
+ 상수는 변하지 않는 변수를 말한다.

const a = 1;
여기서 a는 상수이고, 1은 리터럴이다.

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


변수 선언

변수 타입 + 변수 이름 ;
int age;

변수 초기화

변수의 초기화란, 변수를 사용하기 전에 값을 저장하는 것

변수 타입 + 변수 이름 + 초기화할 값;
int age = 29;

초기화를 하는 이유는 예측할 수 없는 값이 들어가는 것을 방지하기 위해서 입니다.

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


변수의 스코프란?

변수에 접근하거나 접근할 수 있는 유효 범위/영역
블록은 왼쪽 중괄호 '{' 로 시작하고 오른쪽 중괄호 '}' 로 끝납니다.

변수의 라이프타임이란?

변수가 메모리에서 살아있는 기간

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


타입 변환이란?

변수 또는 상수의 타입을 다른 타입으로 변환
연산을 수행하는 코드에서는 같은 타입끼리만 가능합니다. 그래서 연산을 수행하기 전에 같은 타입으로 만들어야 하는데 타입 변환을 하는 것을 형변환 이라고 합니다.

타입 변환의 종류

  • 캐스팅 : 큰 데이터 타입에서 작은 데이터 타입으로 형변환
  • 프로모션 : 작은 데이터 타입에서 큰 데이터 타입으로 형변환

형변환 방법

1차 및 2차 배열 선언하기


배열이란?

동일한 자료형의 데이터를 연속된 공간에 저장하기 위한 자료구조입니다.
즉, 연관된 데이터를 그룹화하여 묶어준다고 생각하면 됩니다.

배열의 장점

연관된 데이터를 저장하기 위한 변수의 선언을 줄여주며, 반복문 등을 이용하여 계산과 같은 과정을 쉽게 처리할 수 있습니다.

1차 배열 선언하기

int[] array = new int[10];
즉 int 배열 선언시 {0,0,0,0,0,0,0,0,0,0}와 같이 10개의 값이 초기화됩니다.

1차 배열에 값 넣기

int[] array = new int[5];
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;
Sysotem.out.println(array[0]) // 배열에서 값 추출

2차 배열 선언하기

int[][] array = new int[10][10];

2차 배열에 값 넣기

int[][] array = new int[5][5];
array[0][0] = 1;
array[0][1] = 2;
array[1][0] = 3;
array[1][1] = 4;

타입 추론, var


타입추론이란?

개발자가 변수의 타입을 명시적으로 적어주지 않고도, 컴파일러가 알아서 이 변수의 타입을 대입된 리터럴로 추론하는 것입니다.

var

var는 변수를 선언할 때 타입을 생략할 수 있으며, 컴파일러가 타입을 추론합니다.
다음과 같이 변수를 선언하면 컴파일러가 String 타입을 추론하여 변수에 타입을 지정해 줍니다.

var string = "Hello World";

var는 지역 변수에서만 사용할 수 있습니다. 또한 컴파일러가 타입을 추론할 수 없는 애매한 상황일 때 컴파일러 에러가 발생합니다.

var 제약 사항

  1. 지역 변수에서만 사용
  2. 초기화 필요
  3. null로 초기화할 수 없음
  4. 배열에 사용할 수 없음
  5. Lambda에 사용할 수 없음

출처

https://gbsb.tistory.com/6
https://antstudy.tistory.com/187
https://velog.io/@pjeeyoung/리터럴
https://velog.io/@estell/JAVA-변수-선언과-초기화
https://maximum-curry30.tistory.com/287
https://antstudy.tistory.com/242

0개의 댓글