프리미티브 타입
- 값을 변수에 대입하여 사용함
- 실제 값이 스택에 저장
- 값이 없을 경우 기본 값이 들어감
레퍼런스 타입- 프리미티브 타입을 제외한 나머지 타입들 (클래스, 인터페이스, 배열 등)
- 실제 값을 가지고 있는 것이 아닌 값이 저장된 주소 값을 힙에 저장
- 값이 없을 경우 null
- 변하지 않는 데이터
- 데이터 값 그대로인 상수
- 소스코드의 고정된 값
내가 이해한 바로는 int a = 1; 에서 1이 리터럴 인 것 같다.
음,, 타입에 따라서 리터럴 타입도 달라지게 됨!! 아래와 같이? 😉char c = 'H'; String st = "hi";
- 초기화는 변수에 대입 연산자를 통해 값을 대입해준다는 의미!
- 초기화는 한번에 여러개 불가능! (아래 코드에서
A, B = "하이";)
123456789 // 변수 선언String a;// 변수 선언과 동시에 초기화String b = "안녕";// 변수 선언 이후 초기화String c;c = "잘가";// 여러개의 변수 선언String A, B, C;cs
스코프
- 특정 변수에 접근하거나 그 변수가 유효한 범위, 영역
- 일반적으로 {}안에서 선언된 변수는 해당 {}안에서만 유효함
public class Main{ int a = 1; public void ex(){ int b = 2; } }
위 코드에서 a는 ex 메소드 내에서 사용할 수 있고 b는 ex 메소드 밖에서 사용할 수 없음
라이프타임 (변수가 메모리에서 언제까지 살아있는지)
- 인스턴트 변수, 클래스 변수, 지역 변수로 나눠짐
- 인스턴트 변수는 클래스의 객체가 메모리에 남아 있을 때 까지
- 클래스 변수는 static이 붙은 객체를 말하며 프로그램이 종료될 때 까지
- 지역 변수는 변수가 선언된 {} 안에서 프로그램이 끝나기 전까지
public class Main{ // 인스턴트 변수 int a = 1; // 클래스 변수 static int b = 2; public void ex(){ // 지역 변수 int c = 3; } }
타입 변환
- 특정 값이나 특정 변수를 다른 타입으로 변경하는 것
캐스팅- 큰 데이터 타입에서 작은 데이터 타입으로 변환하는 것
프로모션- 작은 데이터 타입에서 큰 데이터 타입으로 변환하는 것
// 캐스팅 int a = 3; short b = (short) a; // 프로모션 short c = 2; int d = c;
배열
- 같은 타입을 가진 여러 값이 저장되는 순서(index)가 있는 변수
1차 배열
int[] arr = {1, 2, 3, 4}; int arr[] = {1, 2, 3, 4};
2차 배열
int[][] arr = {{1},{1,2},{1,2,3},{1,2,3,4}}; int arr[][] = {{1},{1,2},{1,2,3},{1,2,3,4}};
타입추론
- 변수의 타입을 정하지 않고 컴파일러가 알아서 변수의 타입을 대입된 리터럴로 추론하는 것
var- Java 10 부터 생긴 var 구문으로 지역변수로만 선언할 수 있음
var map = new HashMap<String, Integer>();
이렇게 사용할 수도 있음,,, 사용할지는 잘 모르겠음,,(☞゚ヮ゚)☞