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

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

primitive type이란 프로그래밍 언어가 제공하는 자료형(기본형 혹은 내장형) 중 하나입니다.

자바에서 제공하는 primitive type의 종류로는 8 가지가 있습니다.

primitive type 크기 범위(signed) 내용
byte 8-bit -128 ~ 127  
short 16-bit -32,768 ~ 32,767  
int 32-bit -2³¹ ~ 2³¹-1  
long 64-bit -2⁶³ ~ 2⁶³-1  
float single-precision 32-bit 3.40282347 x 10³⁸, 1.40239846 x 10⁻⁴⁵  
double double-precision 64-bit 1.7976931348623157 x 10³⁰⁸, 4.9406564584124654 x 10⁻³²⁴  
boolean 8-bit    
char 16-bit ‘\u0000’ (or 0) ~ ‘\uffff’ (or 65,535 inclusive) single 16-bit Unicode character.

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

primitive type을 제외한 모든 타입(객체)은 referenace type입니다.

  • referance type은 메모리에 참조값을 저장해 놓는다는 점에서 primitive type과 다릅니다.
  • referance type은 Heap에 객체를 저장하고 스택에 참조타입을 저장합니다. (primitive type은 stack에 저장됨)

  • 초기값이 null이 올 수 있습니다.
  • 따라서 sql과 연동시 처리가 용이합니다.
  • 예로, string, array, Integer 가 있습니다.
Int와 Intger 차이
Int : primitive 타입으로 산술 처리용이
Integer : referance 타입으로 null 을 가질 수 있음 (sql 연동에 용이)

리터럴 & 변수 선언 및 초기화하는 방법

리터럴(literal)이란 소스 코드의 고정된 값입니다. 리터럴은 변수 초기화에 종종 사용됩니다.

int i = 1;
String s = "가을";

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

Instance 변수

  • 범위 : 클래스 안, 함수 밖에 선언된 변수
  • 라이프타임 : 객체가 메모리에 남아있을 때까지

Class 변수

  • 범위 : 클래스 안, 함수 밖에 static으로 선언된 변수
  • 라이프타임 : 프로그램이 끝날 때까지

Local 변수

  • 범위 : 인스턴스 변수, 함수 변수가 아닌 변수들, 가장 바깥 블록까지
  • 라이프타임 : 가장 바깥 블록 마지막까지

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

    타입 변환

    int a = 1;
    long b = a;
    

    이러면 에러 발생하므로 캐스팅을 해야합니다.

    long a = 1;
    int b = (int)a;
    

    하게 된다면 큰 타입-> 작은 타입으로 해야 커버가 가능합니다.

    1차 및 2차 배열 선언하기

    배열의 경우 new 키워드로 선언해야합니다.

    int[] a = new int[10];
    

    기본적으로 new키워드는 Heap에 저장되기때문에 각각의 값들은 Heap에 저장되지만, 배열을 참조하는 int[] a는 Stack에 저장됩니다.

타입 추론, var

타입 추론은 어떤 타입인지 예측.

var는 java10 부터 쓸 수 있게된 타입으로, 런타임시 타입이 결정되는 동적타입 키워드입니다.

출처 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html