본문 바로가기

JAVA37

Java - 열거 (enum) 1. 열거 타입 (Enumeration Type) 1) 한정된 값만을 갖는 데이터 타입 (가을, 겨울, 로그인 성공, 로그인 실패 등). 2) 관련된 상수들을 같이 묶어 놓은 것. (무늬는 무늬끼리, 숫자는 숫자끼리) - Java는 타입에 안전한 열거형을 제공. class Card { enum Kind { CLOVER, HEART, DIAMOND, SPADE } //열거형 Kind를 정의 enum Value { TWO, THREE, FOUR } //열거형 Value를 정의 final Kind kind; //타입이 int 가 아닌 kind 임. final Value value; if(Card.Kind.CLOVER == Card.Value.TWO) { //타입이 달라서 비교 불가. 컴파일 에러 } //이처럼.. 2022. 11. 21.
Java - Stack 과 Queue 1. Stack 1) LIFO (후입선출, Last In First Out) : 나중에 넣은 객체가 먼저 빠져나가는 자료 구조. 2) LIFO 자료구조를 구현한 클래스로 Stack 을 응용한 대표적인 예가 JVM 스택 메모리. 3) 스택의 활용 예시) 수식 계산, 수식 괄호 검사, 워드프로세서의 undo/redo, 웹브라우저의 뒤로/앞으로 Stack 구조 4) 주요 메서드 리턴타입 메서드 설명 boolean empty() 스택이 비어있는 지 알려줌. Object push(Object item) 주어진 객체(item)를 스택에 넣음. Object peek() 스택의 맨 위 객체를 가져옴. 객체를 스택에서 제거하지는 않음. Object pop() 스택의 맨 위 객체를 가져옴. 객체를 스택에서 제거함. int.. 2022. 11. 5.
JAVA - Stream (스트림) 1. 스트림 의미 1) 컬렉션의 저장 요소를 하나씩 참조해 람다식으로 처리할 수 있도록 도와주는 반복자. (자바8부터 추가) 2) 자바7 이전까지는 List 컬렉션에서 요소를 순차적으로 처리하기 위해 Iterator 반복자를 사용했음. /* Iterator */ List list = Arrays.asList("홍길동", "김자바"); Iterator iterator = list.iterator(); while(iterator.hasNext()){ String name = iterator.next(); } /* Stream */ List list = Arrays.asList("홍길동", "김자바"); Stream stream = list.stream(); stream.forEach( na.. 2022. 10. 29.
Java - Arrays 클래스 1. Arrays 클래스로 배열 다루기 1) 배열의 비교와 출력 메서드 - toString(), deepToString() 메서드 예시 - toString() 은 1차원 배열에 쓰이고, deepToString() 은 2차원 혹은 다차원 배열에 쓰임. int[] arr1 = {0,1,2,3,4}; int[][] arr2 = {{11,12}, {21,22}}; System.out.println(Arrays.toString(arr1)); //출력 화면 => [0,1,2,3,4] System.out.println(Arrays.deepToString(arr2)); //출력 화면 => [[11,12], [21,22].. 2022. 10. 29.
Java - 다형성, instanceof 1. 다형성 (Polymorphism) 1) 부모 타입의 참조 변수로 자식 타입의 여러 객체를 다룰 수 있는 기능. 다형성은 상속을 전제 조건으로 함. 2) 상속한 클래스의 객체는 슈퍼 클래스로도 서브 클래스로도 다룰 수 있음. 3) 같은 코드에서 여러 다른 실행 결과가 나옴. 4) 하위클래스 객체를 상위클래스에 대입하여 사용할 수 있음. 5) 캡슐화(정보 은닉), 상속과 더불어 객체 지향 프로그래밍의 가장 큰 특징 중 하나임. 6) 다형성을 잘 활용하면 유연하고 확장성 있고, 유지보수가 편리한 프로그램을 만들 수 있음. 기본적으로는 아래 코드처럼 객체를 생성할 때 참조 타입과 인스턴스의 타입을 동일하게 작성해왔음. //이제까지 타입은 아래처럼 동일해야 했음. Tv t = new Tv(); SmartTv.. 2022. 10. 29.
Java - 제네릭스 (Generics) 1. 제네릭스 (Generics) 1) 컴파일시 타입을 체크해 주는 기능. 2) 클래스를 설계할 때 타입 파라미터로 대체했다가 실제 사용될 때 구체적인 타입을 지정함으로써 타입 변환을 최소화. 3) 선언시 클래스 또는 인터페이스 이름 뒤에 "" 부호가 붙음. 사이에는 타입 파라미터가 들어감. 4) 타입 파라미터 - 일반적으로 대문자 알파벳 한 문자로 표현. - 개발 코드에서는 타입 파라미터 자리 자리에 구체적인 타입을 지정해야 함. public class 클래스명 {....} public interface 인터페이스명 {....} 2. 제네릭스를 사용하는 이유 1) 컴파일 시 미리 타입을 체크해서 런타임 에러를 사전에 방지 2) 불필요한 타입 변환을 생략할 수 있어 코드가 간결해짐. 3) 비제네릭을 사용.. 2022. 10. 29.