보통사람

[Study-2주차] 자바 데이터 타입, 변수 그리고 배열 본문

Study

[Study-2주차] 자바 데이터 타입, 변수 그리고 배열

pej4303 2020. 11. 21. 01:49
  • 목표
    • 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다

  • 학습할 것
    • Primitive 타입 종류와 값의 범위 그리고 기본 값

    • Primitive 타입과 Reference 타입

    • 리터럴

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

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

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

    • 1차 및 2차 배열 선언하기

    • 타입 추론, var

1. Primitive 타입과 Reference 타입

 

자료형은 크게 기본형(Primitive) 타입과 참조형(Reference)타입 있습니다.

기본형 타입은 총 8가지로 기본형을 제외한 모든 타입은 참조형 타입입니다. 

  • 기본형(Primitive) 타입

    • 실제 값을 저장함

    • 기본값이 있음

    • char은 문자형이지만 사실 문자의 유니코드(정수)가 저장됨

출처 : Java의 정석

  • 참조형(Reference)타입

    • 어떤 값이 저장되어 있는 주소를 값으로 가짐

    • 기본값이 null 임

 

2. 리터럴(literal)이란?

 

리터럴은 변수 또는 상수가 가지고 있는 값 자체를 의미합니다. 

 

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

 

형변환은 다른 타입으로 변환되는 것을 의미하며 아래의 2가지 방식이 있습니다. 

 

  • 명시적 형변환(Casting)

    • 자료형의 메모리 타입이 더 큰 자료형에서 작은 자료형으로 변환되는 방식으로 데이터 타입을 명시하기 때문에 원래의 값이 손실될 수 있습니다. 

double d = 110.1;
int num = (int) d;
  • 자동 형변환(Promotion)

    • 자료형의 메모리타입이 더 작은 자료형에서 큰 자료형으로 변환되는 방식으로 이 경우 형변환을 생략해도 컴파일러가 알아서 자동적으로 형변환을 해주며 기존의 값을 최대한 보존 할 수 있는 타입으로 변환합니다.

    • byte < short , char < int < long < float < double 

int i = 100;        //  => int i = (int) 100; 이렇게 해도 됨

 

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

 

알 수 없는 쓰레기 값이 남아 있을 수 있기 때문에 초기화 후 변수를 사용해야 합니다. 

선언 및 초기화하는 방식은 아래와 같이 2가지가 있습니다.

 

// 방법1) 변수 선언 후 초기화하는 방식
int a;
int b;

a = 0;
b = 1;

// 방법2) 변수 선언과 동시에 초기화하는 방식
int a = 0, b = 1;

 

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

 

변수의 유효범위(Scope)는 변수의 사용 가능 범위를 의미하며 변수마다 유효범위가 다릅니다.

  • static 변수

    • 유효범위 : static 메소드를 제외한 해당 클래스 

    • 메모리에 해당 변수가 남아 있을 때까지 사용 가능

  • 인스턴스 변수

    • 유효범위 : 해당 클래스

    • 해당 클래스가 메모리에 남아 있을 때까지 사용 가능

  • 지역 변수

    • 유효범위 : 지정된 블록

    • 지정된 블록을 벗어나기 전까지 사용 가능

public class Test {
    static int cnt = 0;    // static 변수
    int num = 1000;        // 인스턴스 변수
    
    {
       int tmpNum = 100;    // 지역변수
    }
}

 

 

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

// 방법 1) 선언하고 따로 값을 넣는 방식
// 1차원 배열
int[] a;  
a = { 1,2,3 };

// 2차원 배열
int[][] b;
b = { {1,10}, {2,20}, {3,30} };

// 방법 2) 선언과 동시에 값을 넣는 방식
// 1차원 배열
int[] a = { 1,2,3 };  

// 2차원 배열
int[][] b = { {1,10}, {2,20}, {3,30} };

 

 

7. 타입 추론, var

 

타입 추론(Type Inference)은 타입이 정해지지 않은 변수를 컴파일러가 해당 타입을 유추하는 것을 의미합니다.

자바의 타입 추론은 제네릭과 람다에 대한 타입 추론을 뜻합니다. Java 10부터 타입 추론을 지원하는 var 키워드가 추가되었습니다. var로 선언한 변수는 컴파일시 원래의 타입으로 변경됩니다.

 

 

※ 참조

Java의 정석
futurecreator.github.io/2018/07/20/java-lambda-type-inference-functional-interface/

programmers.co.kr/learn/courses/5/lessons/231

velog.io/@bk_log/Java-%ED%83%80%EC%9E%85-%EC%B6%94%EB%A1%A0

 

 

'Study' 카테고리의 다른 글

[Study-6주차] 상속  (0) 2020.12.22
[Study-5주차] 클래스  (0) 2020.12.13
[Study-4주차] 제어문  (0) 2020.12.07
[Study-3주차] 연산자  (0) 2020.11.28
[Study-1주차] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가  (0) 2020.11.21