JAVA/JAVA 18

Enum, EnumSet, EnumMap

Enum enum은 열거형 상수를 의미합니다. public enum Status { START("0001"), RUNNING("0005"), FINISH("9000") ; private String code; Status(String code) { this.code = code; } } Enum을 사용했을 때 좋은 점. 1. 단순 String(원시) 비교가 아니고 Enum 타입으로 비교하기 때문에, 코드의 안전성을 높일 수 있습니다. 2. 허용가능한 값을 제한할 수 있습니다. 3. Enum 클래스 안에 상수를 선언하는 것이기 때문에, PREFIX를 줄일 수 있습니다. (ex. STATUS_START = "0001", STATUS_FINISH = "0005") 4. Enum 클래스 안에 메소드를 선언하여,..

JAVA/JAVA 2023.07.11

I/O

I/O (input / output) 데이터 입출력 데이터가 들어오는 것 (Input)과 데이터가 나가는 것(Output)을 합쳐 I/O라고 합니다. 자바에서는 스트림, 채널, 버퍼 등을 통해 데이터 입출력이 가능합니다. Stream 스트림 스트림은 물이 한 방향으로 흘러가는 것처럼 단방향으로만 데이터 전송이 가능합니다. (입력과 출력 하나만 가능) 예를 들어 파일의 데이터를 읽고 저장하는 작업을 모두 수행해야 한다면, File Input Stream과 File Output Stream을 2개를 생성해야 합니다. 스트림은 바이트 스트림(Byte Stream)과 문자 스트림(Character Stream)으로 구분됩니다. 바이트 스트림 : 그림, 멀티미디어, 문자 등 모든 종류의 데이터 입출력이 가능함. ..

JAVA/JAVA 2022.02.06

인터페이스

인터페이스란? 완벽한 추상 클래스 : 모든 메소드가 추상 메소드 (abstact method)로 이루어져 있는 클래스 interface Animal { public void animalSound(); // interface method (does not have a body) public void run(); // interface method (does not have a body) }* 추상 메소드 : 정의만 되어있는 메소드로 실제 기능을 구현되어 있지 않은 것을 의미. 인터페이스의 역할 다형성을 구현할 수 있다. 인터페이스를 사용하면 메소드를 호출할 때, 인터페이스의 구조만 알면 되고, 객체 각각의 내부 구현에 대해서는 알 필요가 없어진다. * 다형성이란 동일한 요청을 받았을 때 객체의 타입에 따라..

JAVA/JAVA 2021.11.30

Optional

Optional Class Optional 클래스는 스트림에서 Null Pointer Exception을 피할 수 있도록 도와주는 클래스입니다. Optional로 특정 클래스를 감싸서 사용합니다. 이렇게 하면 Optional 클래스 안에 MyClass가 담겨있는 모양이 됩니다. ① Null 값이 들어온 경우 Null을 대체할 수 있는 Default 값을 설정할 수 있습니다. ② 값이 없을 경우에는 Optional을 Null이 아닌 Empty 상태로 반환하여 처리합니다. private Optional soundcard; public Optional getSoundcard() { ... } Optional 객체 생성하기 ① emtpy : Empty 상태로 Optional 객체를 생성하기 Optional sc..

JAVA/JAVA 2021.11.07

스트림 Stream

Stream 스트림 스트림은 자바 8부터 추가되었으며, 람다식을 이용해 컬랙션의 요소를 하나씩 함수적 프로그래밍으로 처리할 수 있도록 해주는 기능입니다. ArrayList의 값을 모두 합산하려고 한다면 반복문을 사용해야 합니다. List arrayList = Arrays.asList(1,2,3,4,5); Integer sum = 0; for(Integer a : arrayList){ sum += a; } 스트림을 사용하면 아래와 같이 값을 합산할 수 있습니다. int sum1 = arrayList.stream().mapToInt(a->a).sum(); 스트림의 특징 ① 람다식을 이용해 요소를 처리합니다. 람다식을 이용해 기능을 구현하거나, 메소드를 호출하여 컬랙션의 요소를 하나씩 처리할 수 있습니다. ②..

JAVA/JAVA 2021.11.07

Comparator와 Comparable

Comparable collecion 클래스에서 구성 요소를 정렬하는 기준을 정의하는 인터페이스입니다. Collection의 요소가 사용자 정의 클래스인 경우에는 Comparable 인터페이스를 상속받아 구현되어야 합니다. 상속 받은 뒤에는 정렬기준을 정의하는 compareTo 메소드를 구현해야 합니다.(오버라이드) 메소드 리턴 설명 compareTo(T o) int o와 객체가 가진 값이 같으면 0을 리턴 o보다 객체가 가진 값이 크면 양수를 리턴 o보다 객체가 가진 값이 작으면 음수를 리턴 public class Student implements Comparable{ int id ; int score; String name; public Student(int id, int score, String n..

JAVA/JAVA 2021.10.29

Lambda Expressions 람다식

Lambda Expressions 람다식은 인터페이스에 정의된 객체를 인터페이스를 호출(사용)하는 시점에 사용자가 정의하여 사용할 수 있는 기능을 제공하는 기능입니다. 미리 정의된 메소드, 클래스를 사용하는 것이 아니라 호출 시점에 재정의하여 사용하는 함수적 프로그래밍을 지원하는 기능입니다. (타입 매개변수) -> {실행문} (int a) -> { a = a+1 } 람다식을 구현하기 위해서는 먼저 인터페이스에 추상메소드 1개를 선언해야 합니다. public interface Calculation { int calculate(int a, int b); } 추상메소드가 선언한 다음 인터페이스를 호출하는 시점에 아래 코드처럼 Override하여 기능을 정의할 수 있습니다. Calculation normal =..

JAVA/JAVA 2021.10.28

Collection 컬렉션

Collection Interface 자바의 인터페이스를 이용해 구현된 것으로 데이터를 저장하는 자료구조를 정의하는 프레임워크입니다. Collection 인터페이스의 종류 종류 특징 구현 클래스 List 순서가 있는 자료구조 Vector, ArrayList, LinkedList, Stack Set 순서가 없으며 중복값을 허용하지 않는 자료구조 HashSet, TreeSet Map key와 value로 이루어진 자료구조로 key는 중복값을 허용하지 않음 HashMap, TreeMap Queue 선입선출의 자료구조 Queue Deque 양방향 선입선출 자료구조 Deque Collection 인터페이스의 기본 Method method return 설명 size() int collection 객체의 길이(담긴 ..

JAVA/JAVA 2021.10.25

제어문(조건문 if, 반복문 for/while)

제어문 메소드는 { } 에서 위에서 아래로 흘러가며 실행된다. 이런 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 게 제어문이다. 제어문에는 조건문과 반복문이 있다. 조건문은 특정 조건을 만족할 경우 { } 내부를 실행하고 원래의 실행흐름으로 되돌아온다. 반복문은 특정 조건을 만족할 때까지 { } 내부를 반복 실행한다. 조건문 IF if 문은 조건식이 true이면 { } 내부를 실행하고, false이면 실행하지 않는다. int score = 70; String grade; if(score >= 90) { grade = "A"; } // 위의 if문 조건을 만족하지 않으면서 // 해당 조건문을 만족하면 실행한다. else if(score >= 80 ) { grade = "B"; } // 위의..

JAVA/JAVA 2021.10.07