1 byte = 8 bit, 1 byte는 개의 값을 표현 가능
프리미티브 타입 : Primitive type. 자바의 기본 타입으로 정수형, 문자형, 실수형, 논리형이 있다. 메모리에 실제 값을 저장하며 고정된 크기를 가진다. 스택 영역에 저장된다.
레퍼런스 타입 : Reference type. 참조 타입으로 기본 타입을 제외한 모든 타입은 참조 타입이다. 고정된 크기가 정해져있지 않다. 데이터는 힙 영역에 저장되고 변수에는 주소를 저장한다.
데이터의 실제 값 혹은 값을 표현하는 방법. 데이터의 타입을 명확하게 표현하기 위해서 사용한다.
리터럴의 종류는 정수형, 실수형, 논리형, 문자형, 문자열등이 있다.
true, false
값 뒤에 l/L을 붙이면 long 타입을 나타낸다.
기본적으로 double형을 나타내지만 값 뒤에 d/D를 붙여 명시적으로 나타낼 수도 있다.
값 뒤에 f/F을 붙이면 float 타입을 나타낸다.
작은 따옴표(')로 둘러쌓인 문자('a')
기본적으로 char형을 나타내지만 int형이나 long형으로 값을 받을 수 있다. 정수형 타입으로 값을 받으면 유니코드 값이 저장된다.
큰 따옴표로 둘러쌓인 문자열("abcd")
자바에서 쓰이는 리터럴로 null값을 나타낸다. 참조가 없음을 의미한다.
변수 선언은 타입과 변수이름으로 할 수 있다.
기본 타입은 = 연산자, 참조 타입은 new 연산자와 생성자를 통해 초기화 할 수 있다.
//변수 선언
int a; //타입 변수명;
char b,c; //콤마를 이용해 여러 개의 변수 선언 가능
Map m;
//초기화
a = 1;//리터럴을 통해 초기화
b = 'A';
m = new HashMap();//생성자를 통해 초기화
연산자 new는 새로운 인스턴스에 대한 참조를 리턴한다.
참조는 해시코드로 되어있으며 4바이트 정수값을 가진다.
자바는 메모리의 실제 주소를 변수에 저장하지 않고 내부 인덱스 테이블의 주소인 참조값을 통해 변수에 접근한다. 변수에 값을 할당하게 되면 참조값으로 내부 인덱스 테이블에서 메모리 주소를 검색하여 데이터를 할당하게 된다.
초기화 : 변수에 값을 할당하는 것
인스턴스 : 메모리에 만들어진 객체
스코프 : 변수에 접근할 수 있는 영역
라이프 타임 : 변수가 메모리에 선언되고 소멸 할 때까지
변수는 클래스 변수, 인스턴스 변수, 로컬 변수로 나눌 수 있다.
클래스 내에 선언되며 static으로 선언된 변수, 전역 변수라고도 부른다.
스코프 : static을 포함한 클래스 전체에서 접근할 수 있다.
라이프 타임 : 프로그램을 종료할 때 까지 존재
클래스 내, 함수와 블록 밖에 선언된 변수
스코프 : static을 제외한 클래스 전체
라이프 타임 : 클래스가 메모리에 있는 동안
클래스와 인스턴스 변수를 제외한 모든 변수
스코프 : 선언된 블록 내
라이프 타임 : 블록을 벗어나기 전 까지
프로모션(Promotion) : 묵시적 형 변환. 자동 타입 변환. 작은 개념에서 큰 개념으로 변환 할 경우 프로모션이 일어난다. 크기가 작은 int에서 큰 long으로 변환 할 때 캐스팅 하지 않아도 자동으로 타입이 바뀐다.
캐스팅(Casting) : 명시적 형 변환. 강제 타입 변환. 큰 개념에서 작은 개념으로 변환 할 경우 캐스팅이 필요하다. 크기가 큰 long에서 크기가 작은 int로 변환하거나 상속 관계를 가진 클래스간 변환에서 사용한다.
업캐스팅(up-casting) : 서브 클래스는 수퍼 클래스로 변환 할 수 있다.
다운캐스팅(down-casting) : 수퍼 클래스에서 서브 클래스로 변환하는 걸 의미한다. 하지만 서브 클래스의 속성을 가진 경우만 가능하기 때문에 이미 수퍼 타입으로 업캐스팅 됐던 객체만 가능하다.
배열은 자료형의 집합이다. 레퍼런스 타입이며, 배열의 길이는 고정적이다. 인덱스를 통해 값에 접근 할 수 있다.
//1차 배열 선언
int[] array1 = new int[3];
int[] array2 = new int[]{1,2,3};
//2차 배열 선언
int[][] array3 = new int[2][3];
int[][] array4 = new int[2][];
array41[0] = new int[3];
int[][] array5 = {{1},{2,3},{4,5,6}};
타입 추론 : 코드 작성시에는 타입이 정해지지 않았지만 컴파일러가 유추 하는 것. generic, lambda, var등이 있다.
var : java10 부터 추가된 타입 추론을 지원하는 변수.
참조
https://en.wikibooks.org/wiki/Java_Programming/Literals
https://dohe2014.tistory.com/entry/참조reference와-참조변수reference-variable
https://www.learningjournal.guru/article/programming-in-java/scope-and-lifetime-of-a-variable/