본문 바로가기

프로그래밍/JAVA

(24)
[ JAVA ] 지네릭스(Generics) - ① 1. 지네릭스란? 지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크(compile-time type check)를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. ⭐️ 지네릭스의 장점 1. 타입 안정성을 제공한다. 2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다. 2. 지네릭 클래스의 선언 class Box { // 지네릭 타입 T를 선언 T item; void setItem(T item) { this.item = item; } T getItem() { return item; } } // 지네릭 클래스가 된 Box클래스의 객체를 생성할 때는 참조변수와 생성자에 타입 T대신에 사용..
[ JAVA ] Arrays Arrays클래스에는 배열을 다루는데 유용한 메서드가 정의되어 있다. 1. 배열의 복사 - copyOf(), copyOfRange() ▶ copyOf(복사할 원본 배열, 복사할 길이) : 지정한 배열을 인덱스 0부터 원하는 길이만큼 복사한다. ▶ copyOfRange(복사할 원본 배열, 복사를 시작할 인덱스, 복사를 끝낼 인덱스) : 지정한 배열에서 특정 범위만큼의 요소들을 복사해 새로운 배열로 반환한다. 지정된 범위의 끝은 포함되지 않는다. int[] arr = {0,1,2,3,4}; int[] arr2 = Arrays.copyOf(arr, arr.length); // arr2 = [0,1,2,3,4] int[] arr3 = Arrays.copyOf(arr, 3); // arr3 = [0,1,2] in..
[ JAVA ] Iterator, ListIterator, Enumeration Iterator, ListIterator, Enumeration은 모두 컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스이다. 1. Iterator ▶ Collection 인터페이스에는 'Iterator(Iterator를 구현한 클래스의 인스턴스)'를 반환하는 iterator()를 정의하고 있다. ▶ 컬렉션 클래스에 대해 iteratort()를 호출하여 Iterator를 얻은 다음 반복문, 주로 while문을 사용하여 컬렉션 클래스의 요소들을 읽어 올 수 있다. ▶ Map 인터페이스를 구현한 컬렉션 클래스는 키(key)와 값(value)을 쌍으로 저장하고 있기 때문에 iterator()를 직접 호출할 수 없다. ( keySet()이나 entrySet()과 같은 메서드를 통해서 키와 값을 각각 따로 S..
[ JAVA ] Queue(큐) 1. Queue ▶ Queue는 처음에 저장한 데이터를 가장 먼저 꺼내는 FIFO(First In First) 구조이다. ▶ 큐는 Queue 인터페이스로만 정의해 놓았을 뿐 별도의 클래스를 제공하고 있지 않다. 대신 Queue 인터페이스를 구현한 클래스들이 있어서 그중 하나를 선택해서 사용하면 된다. (예 : ArrayDeque, LinkedList 등..) ▶ 큐의 활용 예 : 최근사용문서, 인쇄작업 대기목록, 버퍼(buffer) Queue q = new LinkedList(); // Element 타입으로 선언 2. Queue의 메서드 메서드 설 명 boolean add(Object o) 지정된 객체를 Queue에 추가한다. 성공하면 true를 반환. 저장공간이 부족하면 IllegalStateExce..
[ JAVA ] Stack(스택) 1. Stack ▶ Stack은 마지막에 저장한 데이터를 가장 먼저 꺼내는 LIFO(Last In First Out) 구조이다. ▶ 스택의 활용 예 : 수식계산, 수식괄호검사, 워드프로세서의 undo/redo, 웹브라우저의 뒤로/앞으로 Stack st1 = new Stack(); // 타입 설정x Object로 선언 Stack st2 = new Stack(); // Element 타입으로 선언 2. Stack의 메서드 메서드 설 명 boolean empty() Stack이 비어있는지 알려준다. Object peek() Stack의 맨 위에 저장된 객체를 반환. pop()과 달리 Stack에서 객체를 꺼내지는 않음. (비었을 때는 EmptyStackException 발생) Object pop() Stack..
[ JAVA ] 형식화 클래스 1. DecimalFormat ▶ 숫자를 형식화 하는 데 사용한다. ▶ 숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식으로 표현할 수 있으며, 반대로 일정한 형식의 텍스트 데이터를 숫자로 쉽게 변환하는 것도 가능하다. // 예시 double number = 1234567.89; DecimalFormat df = new DecimalFormat("#.#E0"); String result = df.format(number); // 1.2E6 기호 의미 패턴 결과(1234567.89) 0 10진수 (값이 없을 때는 0) 0 0.0 0000000000.0000 1234568 1234567.9 0001234567.8900 # 10진수 # #.# ##########.#### 1234568 1234567.9..
[ JAVA ] Calendar와 Date 1. Calendar와 GregorianCalendar ▶ Calendar는 추상클래스이기 때문에 직접 객체를 생성할 수 없고, 메서드를 통해 완전히 구현된 클래스의 인스턴스를 얻어야 한다. ▶ Calendar를 상속받아 완전히 구현한 클래스로는 GregorianCalendar와 BuddhistCalendar가 있다. ▶ getInstance()는 시스템의 국가와 지역설정을 확인해서 태국인 경우에는 BuddhistCalendar의 인스턴스를 반환하고, 그 외에는 GregorianCalendar의 인스턴스를 반환한다. Calendar cal = new Calendar(); // 에러! 추상클래스는 인스턴스를 생성할 수 없다. // getInstance() 메서드는 Calendar 클래스를 구현한 클래스의 ..
[ JAVA ] java.lang 패키지 - String클래스 1. String 클래스 ▶ String클래스는 문자열을 저장하고 이를 다루는데 필요한 메서드를 제공한다. (1) 변경 불가능한(immutable) 클래스 ▶ String 클래스에는 문자열을 저장하기 위해 문자형 배열 변수(char[]) value를 인스턴스 변수로 정의해놓고 있으며, 인스턴스 생성 시 생성자의 매개변수로 입력받는 문자열은 이 인스턴스 변수(value)에 문자형 배열(char[])로 저장된다. ▶ 한번 생성된 String 인스턴스가 갖고 있는 문자열은 읽어 올 수만 있고, 변경은 불가능하다. ▶ 덧셈연산자 '+'를 사용해서 문자열을 결합하는 것은 매 연산 시 마다 새로운 문자열을 가진 String 인스턴스가 생성된다. ▶ StringBuffer 인스턴스에 저장된 문자열은 변경이 가능하므로..