자바는 변수를 사용하기 위해서 반드시 데이터 타입이 지정이 되어야 한다.
이를 타입 이라고 한다.
이번에 공부할 타입의 종류중 하나인 기본형 타입에 대해 알아보자.
종류로 말하자면 : 정수형, 실수형, 문자형, 불린형


이미지로 정리하자면 위와 같다.
일종의 값 이라고 생각하면 되며 위 첫번째 이미지 처럼 다양한 리터럴이 있다.
즉, 어떤 특정한 값 자체를 말한다.
이 리터럴을 특정 타입에 대입할 수 있다.
boolean isFun = true;
boolean isFun2 = false;
System.out.println(isFun + " " + isFun2);
true 나 false 아닌 다른 값을 넣으면 오류가 발생
char c1 = 'd';
char c2 = 'dasd';
문자 하나만을 표현할 수 있는 것이 캐릭터(character) 이다.
문자 하나가 아닌 2개 이상부터는 오류가 발생한다.
int x = 59;
여기서 59 라는 값 자체를 리터럴 이라고 한다 !!!
long bing = 312312412L;
Long 타입은 값의 마지막에 소문자 l 또는 대문자 L 을 붙여줘야 한다.
float f = 32.4f;
이 또한 뒤에 소문자 또는 대문자 f, F 를 붙여줘야 한다.
double d = 1241231.5;
자바에서 실수는 double 기본값이기 때문에 명시하지 않아도 된다.
자바는 기본형으로 정수, 실수 타입을 제공한다.
큰 데이터 타입에 있는 것을 작은 데이터 타입에 넣으려고 하면 컴파일러 에서 오류가 발생한다.
하지만 반대로 작은 타입에서 큰 타입으로 갈 때는 상관이 없다.
이를 기본형 타입(형)변환 이라고 한다.
즉, 변수 또는 리터럴의 타입을 다른 타입으로 변환하는 것

예시로 들자면...
int x = 50000;
long y = x;
이 경우 형변환이 성공적으로 일어났다고 보면 된다.
int 타입 이 long 타입 으로 형변환이 일어나면서 값이 들어갔다.
아래의 예시랑 다르게 자연스럽게 형변환이 일어나는 경우를 묵시적 형변환 또는 암묵적 형변환 이라고 한다.
long x2 = 5;
// int y2 = x2; 이처럼 큰타입에서 작은 타입으로 오면 에러가 발생한다.
int y2 = (int) x2;
마지막 코드 처럼 값을 담기 전에 int 타입 으로 바꿔주고 하는것이 강제 형변환 또는 명시적 형변환 이라고 한다.
이렇게 하면 컴파일 에러 없이 형변환이 가능하다.
앞서 말한 기본형 타입을 제외한 모든 타입이다.
배열, 클래스도 참조형에 속한다.
String str = new String("hello");
new 는 클래스를 메모리에 올려주는 역할이며 이렇게 메모리에 올라간 클래스를 인스턴스 라고 한다.
올라간 클래스를 가리키는 변수, 참조하는 변수, 레퍼런스 하는 변수 모두 같은 말이다.
이러한 변수가 위에서 str 이다.
변수가 인스턴스를 가지고 있는것이 아니라 가리킨다 라는 의미가 된다.
str 이라는 변수에는 메모리의 위치값이 저장된다.
즉 str 이라는 변수는 String 인스턴스를 참조한다 고 보면 되는 것이다.
