본문 바로가기

프로그래밍/자바21

[JAVA] 메서드 체이닝 만들기 (빌더 패턴) public class ChanningClass { public final String status; private ChanningClass(String status){ this.status = status; } // BuildersImpl 인스턴스를 처음 생성할 메서드가 필요하다. public static Builders startMethod() { return new BuildersImpl(); } // Builder 인터페이스 interface Builders{ Builders method1(String doSomething); Builders method2(String doSomething); ChanningClass build(); } // Builder 구현체 private static cla.. 2022. 8. 26.
[JAVA] 14장. 람다, 스트림 본 글은 책 자바의 정석을 ref 하여 요약한 것입니다. https://komas.tistory.com/68 [JAVA]자바 익명 클래스와 람다식 정리 익명 클래스는 말 그대로 클래스의 이름이 없다는 말이다. 이름이 없으므로 생성자를 가질 수 없다. 익명 클래스를 정의하려면 상속을 받거나 인터페이스로 구현해야한다. 참조 변수에 넣어두 komas.tistory.com https://komas.tistory.com/69 [JAVA] 자바 메소드 참조 메서드 참조란 말 그대로 다른 클래스의 메소드를 참조하여 사용한다입니다. 빌려쓴다고 이해하시면 편합니다. (호출이 아닌 구현부를 빌림) 코드로 설명하겠습니다. public class ProviderClass { public komas.tistory.com ✔ 스.. 2022. 7. 31.
[JAVA] 13장. 쓰레드 본 글은 책 자바의 정석을 ref 하여 요약한 것입니다. 프로세스 실행 중인 프로그램 하나의 프로세스는 하나 이상의 스레드 이상을 갖는다. 스레드 실제 작업을 수행하는 단위 멀티태스킹 여러 프로세스를 동시에 실행 멀티쓰레딩 여러 스레드가 동시에 실행 * 하나의 cpu코어는 번갈아서 여러 작업을 동시성 처리한다. 매우 빠른 속도로 여러 스레드를 처리하기 때문에 병렬적으로 처리하는 것처럼 보인다. 구현 Thread를 상속받아서 run()을 오버 라이딩 Runnable을 구현해서 run()을 오버 라이딩, Thread 생성자의 인수로 제공 실행 start() 메서드로 시작, 사실 시작하는 것은 아니고 실행 대기상태가 된다. * start()는 새로운 call stack을 생성한 후, run()을 호출한다. *.. 2022. 7. 31.
[JAVA] 12장. 제네릭스, 열거형, 어노테이션 본 글은 책 자바의 정석을 ref 하여 요약한 글입니다. 제네릭스 컴파일 타임 시 타입 체크를 해주는 기능 다룰 객체의 타입을 미리 명시하여 형변환을 제거 추가적인 형변환을 하지 않아 성능이 향상된다. 컴파일 이후부터는 지정된 타입으로 바뀐다. 클래스와 메서드에 선언할 수 있다. ✔ 제한 static 에는 사용 불가능 (클래스 변수는 공유가 되는데, 인스턴스마다 제네릭 타입이 달라지므로) new 배열 생성 코드 불가능 (new 연산자는 컴파일 타임 때 타입을 정확히 알아야 함) ✔ 형변환 지정된 제네릭 타입의 자손을 사용하면 형변환이 된다. void add(T t) *T가 부모일 경우 T의 자손도 인수로 사용할 수 있다. ✔ 제한된 지네릭 부모 클래스와 자손 클래스들만 사용 가능 불필요한 다른 타입의 사.. 2022. 7. 31.
[Java] equals()와 hashCode() 사용, HashSet에서의 활용 HashSet에서는 equals()와 hashCode()를 둘 다 사용한다? HashSet은 hashCode()만 사용해서 구현을 하는 줄 잘못 알고 있었다. 기본적으로 bucket에 데이터를 입력할 때 hashCode()를 이용하는 것은 맞다. hashCode 값이 같은 데이터의 발생 즉, 충돌이 일어난다면 그때 equals()를 사용한다. 예를들어 "5"라는 데이터를 입력했을 때 "9"라는 데이터가 같은 hashCode를 반환할 수 있기 때문이다. 그때 equals()를 사용해서 정말 같은 데이터인지 확인할 때 사용한다. (1) hashCode()가 같다. equals()가 같다. => 중복 데이터이므로 저장이 불필요 (2) hashCode()가 같다. equals()가 다르다. => 우연하게 has.. 2022. 7. 30.
11장 컬렉션 프레임 워크 인터페이스 Collection 2022. 7. 28.