Java 4

자바의 내부 클래스

내부 클래스(Inner Class)란? 클래스 내부에 선언한 클래스로 이 클래스를 감싸고 있는 외부 클래스와 밀접한 연관이 있는 경우가 많고, 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 내부 클래스로 선언해서 사용함 중첩 클래스라고도 함 종류: 인스턴스 내부 클래스, 정적(static) 내부 클래스, 지역(local) 내부 클래스, 익명(anonymous) 내부 클래스 인스턴스 내부 클래스 내부적으로 사용할 클래스를 선언 (private으로 사용하는 것을 권장) 외부 클래스가 생성된 후 생성됨 (정적 내부 클래스와 다름) private이 아닌 내부 클래스는 다른 외부 클래스에서 생성할 수 있음 내부 클래스 InClass를 사용하기 위해선 먼저 외부 클래스 OutClass가 생성되어야 하는데, s..

Java 2021.05.05

자바 정렬 인터페이스, Comparable과 Comparator

자료구조를 공부하다보면 필연적으로 정렬에 대해 배우게 됩니다. 예를 들어 TreeSet 은 내부에 BST(Binary Search Tree)가 구현되어 있는데, 이때 어떤 것을 기준으로 어떻게 정렬할 것인지에 대한 정의가 되어 있어야 정상적으로 동작이 됩니다. String과 Integer 같은 클래스들은 Comparable 인터페이스를 이미 구현하고 있어서 TreeSet 인 경우에 오름차순(사전편찬순) 정렬이 수행됩니다. TreeSet 클래스 활용하기 객체의 정렬에 사용하는 클래스 Set 인터페이스를 구현하여 중복을 허용하지 않고, 오름차순이나 내림차순으로 객체를 정렬할 수 있음 내부적으로 이진검색트리(BST)로 구현됨 BST에 저장하기 위해 각 객체를 비교해야 함 비교 대상이 되는 객체에 Compara..

Java 2021.05.05

자바의 유용한 클래스 - Class 클래스

Class 클래스 자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일이 생성됨 Class 클래스는 컴파일 된 class 파일을 로드하여 객체를 동적 로드하고, 정보를 가져오는 메서드가 제공됨 Class.forName("클래스 이름") 메서드로 클래스를 동적으로 로드함 Class c = Class.forName("java.lang.String"); 인자 "java.lang.String" 는 문자열 타입이기 때문에 컴파일 단계에서 오타로 인한 에러를 발견하기 어려우므로 주의! 클래스 이름으로 직접 Class 클래스 가져오기 Class c = String.class; 생성된 인스턴스에서 Class 클래스 가져오기 String s = new String(); Class c = s.getClass(); ..

Java 2021.04.28

자바의 메모리 영역과 가상 메서드

자바의 변수들이 사용되는 메모리 영역 지역 변수는 스택 영역 지역 변수 중 참조 변수가 참조하는 인스턴스 변수는 힙 영역(동적 메모리 영역) static 변수는 데이터 영역 (처음에 프로그램이 메모리에 로드될 때 생성되고 공유되어 사용되다가 프로그램이 업로드될 때 사라짐) 메서드는 어떻게 호출되고 실행되는가? 자바는 모든 메서드가 가상 메서드임 메서드(함수)의 이름은 주소값을 나타냄 메서드는 명령어의 set이고(Instruction Set), 프로그램이 로드되면 메서드 영역(코드 영역)에 명령어 set이 위치함 해당 메서드가 호출되면 명령어 set이 있는 주소를 찾아 명령어가 실행됨 이때 메서드에서 사용하는 변수들은 스택 메모리에 위치하게 됨 따라서 다른 인스턴스라도 같은 메서드의 코드는 같으므로 같은 ..

Java 2021.04.17