정리4장 자바가 확장한 객체지향abstract추상 클래스추상 메서드 : 상위 클래스가 구체적인 기능을 구현할 수 없으나 그 기능을 구현(오버라이딩) 및 접근할 수 있도록 강제하고 싶을 때생성자자바 컴파일러는 생성자가 없으면 기본생성자가 자동으로 생성된다생성자 = 객체 생성자 메서드초기화 블록static 블록 : 해당 클래스가 사용되는 시점에 클래스가 static 영역에 로드되면서 실행됨클래스가 메모리 영역에 로드되는 시점은 프로그램 실행 시가 아니라 해당 클래스를 처음 사용하는 시점임. 메모리 사용을 최대한 늦추어 효율을 높이기 위함인스턴스 블록 : 인스턴스 생성 시 실행. 거의 안쓰임finalfinal 클래스 : 상속 불가final 변수 : 상수. 초기화 이후 재할당 불가final 메서드 : 오버라이딩..
Java
알게된 내용Mutabe과 ImmutableImmutable : 생성 후 그 상태가 변하지 않는 객체e.g. String, Integer, Float, Long값이 수정되면 아예 새로운 값이 생성되고 참조값이 새 주소로 바뀜값 수정 후 identityHashCode()로 해시코드를 출력해보면 다름 → 다른 객체임멀티스레드 환경에서도 안전. 해시키로 사용 가능Mutable : 생성 후에도 상태를 변경할 수 있는 객체e.g. ArrayList, HashMap, StringBuilder, Date변경이 많을 시 메모리 성능 상의 이점이 있음변수명 앞에 a나 the 를 붙이는 경우동일한 이름의 클래스가 존재하고, 클래스의 인스턴스를 만들고 싶을 때,e.g. Bird 의 인스턴스 aBirda 나 the 를 붙여서 ..
더 얻은 내용call by ~ 들 정리해보기자바는 참조값을 복사 전달하므로 배열이든 List든(원시타입이든 객체든) 원본이 변경됨자바는 포인터를 사용하지 않아서 메모리 안전성이 높음만약 자바도 포인터로 메모리를 조작할 수 있었다면, GC 처리된 자원에 대해 바뀌거나 사라진 메모리 주소를 바라볼 수도 있음. 그래서 포인터를 사용하지 않을 수도.포인터에 대한 압박 → 개발 생산성 저하 → Java 가 기업단에서 우세하게 된 배경일 수도.C의 댕글링 포인터 : 이미 해제된(free 또는 delete된) 메모리를 계속 가리키고 있는 포인터atomic은 어떻게 atomic 을 보장하는가? 기억에 남는 내용아래 세가지 내용이 자바가 객체지향 언어라는 점을 조금더 실감나게 해줌자바에서 클래스를 떠나 존재할 수 있는 ..