CS 공부 4일차. Java의 데이터 타입에 대해 정리해 보았습니다 :)
Primitive type & Reference type : 기본 타입은 8개로 boolean, char, byte, short, int, long, float, double이 있습니다. 참조 타입은 class type, interface type, array type, enum type등이 있습니다. 기본 타입은 길이가 정해져있고 stack에 저장되며 선언하고 사용되어야합니다. 참조 타입은 heap에 저장되고 Stack에 포인터와 유사한 값을 저장하여 접근합니다.
직렬화와 역직렬화
equals와 ==의 차이
Call by Reference와 Call by Value의 차이
String, StringBuilder, StringBuffer : String은 객체가 불변하여 연산시 객체를 새로 만들지만 멀티스레드 환경에서 동기화를 걱정하지 않아도 됩니다. StringBuilder와 StringBuffer는 연산시 크기를 변경시키지 새 객체를 만들지 않는다는 점은 공통점이지만 StringBuffer는 Thread-safe하고 StringBuilder는 thread-safe하지 않습니다.
String 객체 vs String 리터럴 : 객체로 생성하면 Heap 영역에 존재하고 리터럴로 생성하면 string constant pool 영역에 존재합니다.
지역 변수 vs 인스턴스 변수 : 지역변수는 메소드 내부에서 정의되어서 메소드 안에서만 존재하고 인스턴스 변수는 클래스 내부에서 정의되어 클래스 전체에서 존재합니다.
UpCasting & DownCasting : Casting은 강제 타입 변환으로서 데이터 앞에 데이터 자료형을 붙여주어 캐스팅한다. 상속관계에 있는 부모 자식 클래스 간에도 캐스팅이 가능한데 업캐스팅과 다운캐스팅이다. 업캐스팅은 자식클래스가 부모클래스 타입으로 캐스팅되는 것이고 다운캐스팅은 부모 클래스가 자식클래스 타입으로 캐스팅되는 것이다.
Promotion : 자동 형변환