본문 바로가기

IT/JAVA

자바 데이터 타입, 변수 그리고 배열 - 백기선님 스터디 2주차 과제

목표

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

학습할 것

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

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

종류 타입 크기(byte) 범위 기본 값
논리형 boolean 1 true(1), false(0) false
문자형 char 2 '\u0000' ~ '\uffff' 
(0~2¹⁶-1)
\u0000
정수형 byte 1 -128 ~ 127
(-2⁷ ~ 2-1)
0
short 2 -32,768 ~ 32,767
(-2¹⁵ ~ 2¹⁵-1)
0
int 4 -2,147,483,648 
~
2,147,483,647
(-2³¹ ~ 2³¹-1)
0
long 8 -2⁶³ ~ 2³-1 0
실수형 float 4 1.40239846E-45f ~ 3.40282347E+38f 0.0
double 8 4.94065645841246544E-324 ~ 1.79769313486231570E+308 0.0

 

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

프리미티브 타입:

 실제 값을 저장한다. (위의 표 참조)

레퍼런스 타입:

 객체의 주소를 저장한다. 프리미티브 타입을 제외한 모든 타입. (String, System 등 | 4 byte | 0x00000000~0xffffffff)

 

리터럴

이름에서 보여주듯 문자 값 그대로를 의미한다. (아래 수식의 우항)

int name = 'soojin';

int age = 31;

리터럴의 정의를 찾아보며 상수와 리터럴이 헷갈렸는데 자바의 정석에 잘 설명이 되어있었다.

일반적으로 1, 123, 'A' 등은 '상수'라 부르는데 프로그래밍에서 상수는 '값을 한 번만 저장할 수 있는 공간'이라고 정의해 두었기 때문에 이와 구분하기 위해 리터럴이라는 용어를 사용한다고 한다.

 

 

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

변수 선언하는 방법

<변수 타입> <변수명>;

ex) int num;

    

변수 초기화하는 방법

<변수타입> <변수명> = <초기화 값>;

ex) int num = 17;

 

 

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

변수의 스코프란

변수를 사용 가능한 범위를 뜻한다.

 

라이프타임

분류 설명 생성 시점  소멸 시점
지역 변수 중괄호{} 내에 선언된 변수 중괄호 시작 점{ 중괄호 끝 }
매개 변수 메소드에 넘겨주는 변수 메소드가 호출될 때 메소드가 끝날 때
인스턴스 변수 클래스 내, 메소드 밖에 선언된 변수 객체가 생성될 때 객체를 참조하는 다른 객체가 없을 때
클래스 변수 인스턴스 변수 중 static으로 선언된 변수 클래스가 처음 호출될 때 자바 프로그램이 끝날 때

출처: https://onsil-thegreenhouse.github.io/programming/java/2017/10/31/java_tutorial_1-3/

 

 

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

boolean을 제외한 나머지 프리미티브 타입은 서로 형 변환이 가능하다.

 

캐스팅(명시적 타입 변환)

크기가 큰 타입을 더 작은 타입으로 변환할 때 (타입)피연산자와 같이 변환 타입을 명시해줘야 한다.

 범위가 큰 타입의 값을 더 작은 범위의 타입으로 변환하면 값이 손실될 수 있다.

  ex) long a = 10;

       int b = (int)a;

 

프로모션(묵시적 타입 변환)

크기가 작은 타입을 크기가 큰 타입으로 변환할 때.

  ex) int a = 10;

      long b = a;

 

1차 및 2차 배열 선언하기

1차원 배열 선언

타입[] 변수이름; ex) int[] arr;

타입 변수이름[]; ex) int arr[];

길이가 3인 int형 배열 : int[3] arr;

 

2차원 배열 선언

타입[][] 변수이름; ex) int[][] arr;

타입 변수이름[][]; ex) int arr[][];

타입[] 변수이름[]; ex) int[] arr[];

2행 3열 크기의 int형 배열: int[2][3] arr;

 

 

타입 추론, var

자바의 var 타입은 10 버전부터 사용이 가능하다.

var는 지역변수이며 컴파일러가 타입을 추론하므로 타입을 선언할 필요가 없다.

그러나 타입을 추론할 때 제공된 값을 토대로 추론하기 때문에 초기화는 필수이며 null로 초기화할 수 없다.

Java는 정적으로 유형이 지정된 언어이기 때문에 JavaScript의 var와는 달리 다른 유형의 값을 할당할 수 없다.

JavaScript에서의 var

 

Java에서의 var

 

 

Reference)

자바의 정석 - 남궁성

programmers.co.kr/learn/courses/5

developers.redhat.com/blog/2018/05/25/simplify-local-variable-type-definition-using-the-java-10-var-keyword/