[Java] 람다 표현식과 함수 인터페이스
Language/Java2024. 11. 8. 02:21[Java] 람다 표현식과 함수 인터페이스

람다란 무엇인가?람다 표현식은 익명 클래스처럼 클래스의 이름이 없고 메서드를 인수로 전달할 수 있으므로 익명 클래스와 유사하다익명: 이름이 없기때문에 익명의 특징을 갖는다함수: 메서드처럼 특정 클래스에 종속된것이 아니기때문에 함수라고 부른다. 하지만 메서드처럼 파라미터, 바디, 반환형식, 가능한 예외 리스트를 포함한다전달: 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다간결성: 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다Comparator byWieght = new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight());..

[JAVA] 예외 계층
Language/Java2024. 7. 9. 14:12[JAVA] 예외 계층

Throwable: 최상이 예외Error: 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구가 불가능한 시스템 예외Exception애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외Exception과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. 단 RuntimeException은 예외RuntimeException: 언체크 예외, 런타임 에외컴파일러가 체크하지 않는 언체크 예외RuntimeException과 그 자식 에외는 모두 언체크 예외이다사용자 정의 예외 계층예외 계층화의 장점부모의 예외를 잡거나 던지면 자식 예외도 함께 잡거나 던질 수 있다특정 예외를 잡아서 처리하고 싶다면 하위예외를 잡아서 따로 처리하면 된다사용자정의 최상위 예외public class Networ..

[JAVA] 자바의 정렬 인터페이스 Comparable과 Comparator
Language/Java2024. 7. 4. 20:52[JAVA] 자바의 정렬 인터페이스 Comparable과 Comparator

자바에서 배열에 대해 정렬을 하고싶다면 어떻게해야할까?코드를 통해 살펴보자import java.util.Arrays; public class SortMain1 { public static void main(String[] args) { Integer[] array = {3, 2, 1}; System.out.println(Arrays.toString(array)); System.out.println("기본 정렬 후"); Arrays.sort(array); System.out.println(Arrays.toString(array)); } }실행결과[3, 2, 1]기본 정렬 후[1, 2, 3]util패키지의 ..

Language/Java2024. 6. 29. 01:38해시 알고리즘

import java.util.Arrays; public class HashStart1 { public static void main(String[] args) { Integer[] inputArray = new Integer[4]; inputArray[0] = 1; inputArray[1] = 2; inputArray[2] = 5; inputArray[3] = 8; System.out.println(Arrays.toString(inputArray)); int searchValue = 8; for (int inputValue : inputArray) { ..

[JAVA - 자료구조] HashSet
Language/Java2024. 6. 29. 01:38[JAVA - 자료구조] HashSet

이제 Set컬렉션에 해시알고리즘을 적용하여 Set보다 훨씬 성능이 좋은 HashSet을 구현해보자먼저 HashSet에서는 해시 알고리즘을 활용할 인덱스를 갖는 배열과 그 각각의 배열안에 해시 코드값이 같은 데이터를 저장하기위한 LinkedList로 구현된다.필드영역static final int DEFAULT_INITIAL_CAPACITY = 16; LinkedList[] buckets; private int size = 0; private int capacity = DEFAULT_INITIAL_CAPACITY;DEFAULT_INITIAL_CAPACITY: 해시 인덱스가 적용될 배열의 기본 길이를 설정하기위한 상수LinkedList[] buckets: 해시인덱스가 적용될 배열private int si..

Language/Java2024. 6. 24. 22:55[JAVA] 불변객체

기본형: 하나의 값을 여러 변수에서 절대로 공유하지 않는다참조형: 하나의 객체를 참조값을 통해 여러 변수에서 공유할 수 있다참조형 변수는 참조값을 복사해서 대입하기때문에 여러변수에서 얼마든지 같은 객체를 공유할 수 있다.객체의 공유는 필요할 때도 있지만 때로는 객체의 공유로 인하여 사이드 이펙트를 만드는 경우도있다.Ex)예상치 않은 참조로 인해서 기존의 참조변수의 값이 변경되어 사이드이펙트가 발생되는경우Address addressA = new Address(); Address b = addressA;위 코드가 객체의 공유를 의미하며 객체의 공유는 아래와 같은 사이드 이펙트를 유발할 수 있다.public static void main(String[] args) { Address addressA ..

[JAVA] 래퍼 클래스
Language/Java2024. 6. 24. 22:53[JAVA] 래퍼 클래스

기본형의 한계객체가 아니기때문에 메서드를 제공할 수 없다null값을 가질 수 없다래퍼 클래스 생성 - 박싱기본형을 래퍼클래스로 변경하는 것을 박싱이라고 한다Integer.valueOf(10)을 하면 Integer객체에 들어있는 값을 꺼낼 수 있다.Integer.valueOf()에는 성능최적화가 되어있는데 String pool과 같이 -128~127범위의 숫자는 pool에 미리 생성해두고 가져와서 사용한다.때문에 아래와 같은 실행결과를 얻는다public static void main(String[] args) { Integer i1 = Integer.valueOf(127); Integer i2 = Integer.valueOf(127); System.out.println(i1 ==..

[Java] Enum타입
Language/Java2024. 6. 18. 15:16[Java] Enum타입

열거형을 배우기 이전에 왜 열거형이 나오게 되었고, 열거형이 아닌 문자열을 사용했을 때, 상수를 사용했을때와의 차이를 알아보자 문자열로 구현먼저 회원등급별로 할인을 적용하는 메서드를 짤 때 문자열로 회원의 등급을 구분해보자public int discountPrice(String grade, int price) { int ratio = 0; if (grade.equals("SILVER")){ ratio = 10; } else if (grade.equals("GOLD")) { ratio = 20; } else if (grade.equals("DIAMOND")) { ratio = 30; } else { ..

image