It's going to be one day 🍀

안녕하세요! 매일 매일 공부하려고 노력하는 백엔드 개발자 지망생의 공부 흔적입니다.

Back-End/Java # 교육 15

[Java 교육] 스트림 Optional/생성/가공/결과 (다시 복습 필수)

[공부 내용 정리] 매핑 (map, flatMap) map : 스트림의 요소를 하나씩 특정 값으로 변환하는 메소드임. 이렇게 변환된 값은 새로운 스트림으로 만들어짐. List list = Arrays.asList("a", "b", "c", "d", "e"); // 하나씩 대문자로 변환 가능 list.stream().map(x -> x.toUpperCase()).forEach(System.out::println); flatMap : map과 마찬가지로 스트림의 요소들을 다른 값으로 대체하는 것은 같지만, 대체하는 값이 스트림일 경우에 flatMap을 사용함. 2차원, 2단계 배열 또는 List 타입에 대해서 일괄적으로 하나의 Stream에서 연산할 수 있도록 함. flatMap은 한 차원씩 배열을 평면화함..

[Java 교육] 람다식 마무리/스트림 (다시 복습 필수)

[공부 내용 정리] java.util.function 패키지 : 함수형 인터페이스 제공 Runnable 매개변수와 리턴 값 모두 없는 경우 package java.lang; @FunctionalInterface public interface Runnable { public abstract void run(); } 아래 예시처럼 매개변수와 리턴값(타입)이 없는 람다식을 참조 가능함. Runnable r = () -> System.out.println("출력문 테스트"); r.run(); // "출력문 테스트" Supplier 매개변수는 없고, 리턴값(타입)이 있습니다. package java.util.function; @FunctionalInterface public interface Supplier { ..

[Java 교육] LIFO,FIFO 컬렉션/람다식 (다시 복습 필수 - 람다식)

[공부 내용 정리] LIFO : Last in First Out 나중에 넣은 객체가 먼저 빠져나가는 자료구조. Stack (후입선출, LIFO) 스택은 마지막에 넣은 객체가 가장 먼저 빠지는 자료구조임. Stack stack = new Stack(); package chapter11; import java.util.Stack; public class StackExample { public static void main(String[] args) { Stack stack = new Stack(); stack.push("coin1"); stack.push("coin2"); stack.push("coin3"); stack.push("coin4"); System.out.println(stack.peek()); ..

[Java 교육] Collection/List/Set/Map

[공부 내용 정리] 컬렉션(Collection) : 요소를 수집해서 저장하는 것 ex) 다수개의 객체를 저장해 두고 필요할 때 마다 꺼내서 사용하는 경우 배열의 문제점을 해결하기 위해 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들이 존재함. 이들을 총칭해서 컬렉션이라고 함. ex) List, Set, Map List, Set 은 객체를 추가, 삭제하는 방법에 공통점이 있고 Collection 인터페이스로 정의해 두고 있음.(배열이나 트리 형태. 하나의 값만 저장함) Map은 키(Key)와 값(Value)을 하나의 쌍으로 묶어서 관리하는 구조로 되어있음. List Collection List : 자료형의 개수가 계속 변하는 상황에서 유리한 자료구조 형태 List 컬렉션은 객체 자체를 저장..

[Java 교육] 제한된 타입/와일드카드 타입/제네릭 상속, 구현

[공부 내용 정리] 제한된 타입 파라미터 () 타입 파라미터에 구체적인 타입을 제한하는 기능 public **** 리턴타입 메소드(매개변수, ...) { } → 제한된 타입 파라미터를 선언하려면 타입 파라미터 뒤에 extends 키워드가 붙고 상위 타입을 명시하면 됨. package chapter10; public class Util { public static int compare(T t1, T t2) { double value1 = t1.doubleValue(); double value2 = t2.doubleValue(); // compare : value1이 작다면 -1 리턴, value1이 크다면 1 리턴, 같다면 0 리턴. return Double.compare(value1, value2); }..

[Java 교육] 자동 리소스 닫기/중간정리/제네릭

[공부 내용 정리] 자동 리소스 닫기(try-with-resource) 예외 발생 여부와 상관없이 리소스 객체의 close() 메소드를 호출해서 안전하게 리소스를 닫아줌. Autocloseable 인터페이스의 close() 메소드를 직접 구현하는 FileInputStream 클래스 public class FileInputStream implements AutoCloseable { private String file; public FileInputStream(String file) { this.file = file; } public void read() { System.out.println(file + " 을 읽습니다"); } @Override public void close() throws Excepti..

[Java 교육] 사용자 정의 예외/트랜잭션

[공부 내용 정리] 사용자 정의 예외 클래스의 목적 package chapter09; public class DBService { public static void main(String[] args) { // 필수값 - Profile : (이름, 나이), 취미, 좋아하는 음식 ... try { save("name", "age", "hobby", "food"); } catch (NotExistsNameException e) { // logging } } public static void save(String name, String age, String hobby, String food) throws NotExistsNameException{ // DB save SQLException 예외 -> 필수값을 입..

[Java 교육] 예외처리/trycatch&finally

[공부 내용 정리] 예외처리 : 응용프로그램 에러 상황을 처리하는 것 에러 상황에서 프로그램이 강제 종료가 되는게 아니라, 에러 상황을 처리함으로써 프로그램이 정상 실행 상태가 유지되도록 할 수 있음. 예외 클래스의 계층 구조 일반 예외 (Exception) : (=컴파일러 체크 예외) : 컴파일하는 과정에서 예외 처리 코드가 필요한지 검사하고 만약 예외 처리 코드가 없다면 컴파일 오류 발생. → 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외 실행 예외 (Runtime Exception) : 컴파일하는 과정에서 예외 처리 코드를 검사하지 않는 예외. → 개발자의 실수로 발생하는 예외 모든 객체의 최상위 부모가 Object이듯, 예외도 최상위 부모는 Object Throwable : 최상위 예외...

[Java 교육] 오버라이딩/인터페이스/다형성

[0202 공부 내용 정리] 메소드 오버라이딩 메소드 오버로딩(method overloading) : 메소드의 이름은 동일하고 입력 항목이 다른 경우 동일한 리턴 타입과 메소드명, 다른 매개변수 void sleep() void sleep(int hour) 메소드 오버라이딩(@Override) : 상속된 부모의 메소드 내용이 자식 클래스에 맞지 않을 경우, 자식 클래스에서 동일한 메소드를 재정의할 수 있음. public class Parent { void method1() { System.out.println("Parent의 method1 호출"); } void method2() { System.out.println("Parent의 method2 호출"); } } public class Child exte..

[Java 교육] final/상수/Getter,Setter/상속

[공부 내용 정리] final 필드 final 필드가 초기값 지정이 되면 이것이 최종적인 값이 되며, 프로그램 실행 도중에 수정할 수 없음. final은 프로그램을 수행하면서 그 값이 바뀌면 안 될 때 사용함. final int time = 3; 필드의 초기값을 줄 수 있는 방법은 필드 선언시 사용! 상수 (static final) 불변의 값을 저장하는 필드. 상수 이름은 모두 대문자로 작성해야함. 언더바(_)로 연결. static final double PI = 3.141592; public class Earth { static final double EARTH_RADIUS = 6400; static final double EARTH_SURFACE_AREA; static { EARTH_SURFACE_A..