Interface
: 공통적으로 사용되는 속성을 정의하고자 하는 경우 사용
내부 클래스 사용 목적 :
클래스 선언 배누에 다른 클래스 선언
클래스를 그룹화하여 하나의 클래스에 둘 수 있어 편리
다른 클래스에 의해 공유되지 않는 구현부를 가질 수 있음
Inner Class : INNER -> OUTER 참조시 outerclass.this 해줘야 함!
outer 클래스의 객체가 생성되었을 때만 inner 클래스를 참조할 수 있음.
static을 inner 클래스를 정의하면 이 클래스 밖에서 정의하는 것과 같은 상태.
instanceof : 타입에 대해 찾아보는 키워드
들어 오는 타입 super에 있어야만 함. super에 해당하지 않으면 에러가 남.
Type Casting :
객체의 타입을 알아보기 위해선 instanceof를 사용.
객체를 캐스팅함으로써 그 객체의 모든 멤버에 접근 가능.
Object Class : 모든 클래스의 최상위 클래스.
extends를 쓰지 않은 클래스를 선언해도 extends Object한 거랑 같음.
equals
== 연산자는 두 개의 레퍼런스가 같은 지를 판단.
Object 클래스의 equals()는 ==과 같은 의미로 구현.
equals()를 오버라이딩 할 때 hashCode()를 오버라이딩 해야 함.
String 연산시 무조건 eqauls() 함수 이용하기!
toString 메소드 : 객체를 String으로 바꿈.
String 연결시 사용. toString() 오버라이드시 객체의 정보를 가독성 있는 형식으로 제공.
Wrapper Class:
Object Runtime 구조:
자바 VM에 관한 내용
Stack > local variable
Heap > new로 생성자를 만들면 여기 드감
Class Area > 클래스 만들면 여기여기여기 여기~
JVM 명세의 이해
Java virtual machine
명령어들의 집합과 각 명령어의 의미 정의 : 바이트 코드
바이트 코드는 플랫폼이 독립적으로 동작해야 함.
바이트 코드는 보안에 문제 없는 지 확인하는 알고리즘
*verification algorithm
바이트 코드