[Java] 데이터 타입

­Valentine·2021년 12월 29일
0

CS

목록 보기
6/23

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에 포인터와 유사한 값을 저장하여 접근합니다.

  • 직렬화와 역직렬화

    • 직렬화는 JVM 메모리에 올려진 객체나 데이터를 외부에서도사용할 수 있도록 Byte 형태로 변환하는 것이며 역직렬화는 이를 반대로 바이트 형태의 데이터를 다시 객체로 변환하는 것입니다. Servelet기반의 WAS에서 세션을 파일 형태나 DB에 저장하면 세션이 직렬화되어 저장됩니다. 또한 캐시되는 부분도 직렬화하여 저장됩니다.
  • equals와 ==의 차이

    • equals는 메소드이고 주소값을 비교하며, ==은 연산자이고 내용을 비교합니다.
  • Call by Reference와 Call by Value의 차이

    • Call by Reference는 포인터를 넘겨서 함수 내의 값이 변경되고 Call by Value는 파라미터로 넘어오는 값이 복사되어 local 변수로 넘어오기 때문에 함수때문에 외부의 변수가 변경되지 않는다.
  • String, StringBuilder, StringBuffer : String은 객체가 불변하여 연산시 객체를 새로 만들지만 멀티스레드 환경에서 동기화를 걱정하지 않아도 됩니다. StringBuilder와 StringBuffer는 연산시 크기를 변경시키지 새 객체를 만들지 않는다는 점은 공통점이지만 StringBuffer는 Thread-safe하고 StringBuilder는 thread-safe하지 않습니다.

  • String 객체 vs String 리터럴 : 객체로 생성하면 Heap 영역에 존재하고 리터럴로 생성하면 string constant pool 영역에 존재합니다.

  • 지역 변수 vs 인스턴스 변수 : 지역변수는 메소드 내부에서 정의되어서 메소드 안에서만 존재하고 인스턴스 변수는 클래스 내부에서 정의되어 클래스 전체에서 존재합니다.

  • UpCasting & DownCasting : Casting은 강제 타입 변환으로서 데이터 앞에 데이터 자료형을 붙여주어 캐스팅한다. 상속관계에 있는 부모 자식 클래스 간에도 캐스팅이 가능한데 업캐스팅과 다운캐스팅이다. 업캐스팅은 자식클래스가 부모클래스 타입으로 캐스팅되는 것이고 다운캐스팅은 부모 클래스가 자식클래스 타입으로 캐스팅되는 것이다.

  • Promotion : 자동 형변환

profile
천체관측이 취미

0개의 댓글