728x90

Programming/JAVA 9

Java - 람다 (기본, 함수형 인터페이스 API)

- 람다식을 알아보기 전 람다의 기본이 되는 인터페이스에 대해 다시 한 번 알아보겠다. - 인터페이스 구현 방법 - MyInterface.java public interface MyInterface { public void print(); } - 일반적인 인터페이스 선언 방식이다. 1. implements 키워드로 클래스 선언 - MyClass.java class MyClass1 implements MyInterface { @Override public void print() { System.out.println("MyClass2"); } } class MyClass2 implements MyInterface { @Override public void print() { System.out.println(..

Programming/JAVA 2023.08.31

JAVA - Stream API (1) (스트림 생성 방법)

- 스트림 종류 1. BaseStream 1. Stream 2. DoubleStream 3. IntStream 4. LongStream - 스트림 생성 방법 1. 컬렉션 : 컬렉션으로부터 스트림을 생성하면 java.util.Collection의 stream() 메서드를 사용한다. default Stream stream() // 순차 스트림 default Stream paralleStream() // 병렬 처리 스트림 ArrayList myList = new ArrayList(); myList.add(10); myList.add(20); myList.add(30); myList.add(40); myList.add(50); Stream myStream = myList.stream(); 2. 배열 : 배열로부..

Programming/JAVA 2023.06.08

JAVA - 열거형

- 열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다. public class Card { static final int CLOVER = 0; static final int HEART = 1; static final int DIAMOND = 2; static final int SPADE = 3; static final int TWO = 0; static final int THREE = 1; static final int FOUR = 2; final int kind; final int num; } - 위와 같이 상수 하나마다 값을 넣어 지정해줘야 했다. enum Kind { CLOVER, HEART, DIAMOND, SPADE } // 열거형 Kind를 정..

Programming/JAVA 2023.06.07

JAVA - Optional

- Optional을 알기 전 NullPointerException을 알아야 한다. - NullPointerException이란? 1. null 값이 반환되면 발생하는 예외이다. - Optional이란? 1. JAVA8에서는 Optional 클래스를 사용해 NPE를 방지할 수 있도록 도와준다. 2. Optional는 null이 올 수 있는 값을 감싸는 Wrapper클래스로, 참조하더라도 NPE가 발생하지 않도록 도와준다. public final class Optional { // If non-null, the value; if null, indicates no value is present private final T value; ... } 3. Optional 클래스는 위와 같이 value에 값을 저장..

Programming/JAVA 2023.06.05

JAVA - Reflection API

- Reflection API 1. 구체적인 클래스 타입을 알지 못해도 그 클래스의 정보(메서드, 타입, 변수 등등)에 접근할 수 있게 해주는 자바 API다. - Car 클래스 구현 public class Car { private final String name; private int position; public Car(String name, int position) { this.name = name; this.position = position; } public void move() { this.position++; } public int getPosition() { return position; } } - 다형성을 통한 객체 생성 public static void main(String[] args)..

Programming/JAVA 2023.06.01

JAVA - 람다 (기본)

1. 람다식 - 람다식은 간단히 말해서 메서드를 하나의 '식'으로 표현한 것이다. 람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있게 해준다. - 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수'이라고도 한다. int[] arry = new int[5]; Arrays.setAll(arr, (i) -> (int)(Math.random()*5+1); (i) -> (int)(Math.random()*5+1); // 메서드로 표현하면 int method() { return (int)(Math.random()*5+1; } 반환타입 메서드이름 (매개변수 선언) { 문장들 } // 람다식으로 변형 (매개변수 선언) -> { 문장들 } int max(int am int b..

Programming/JAVA 2023.05.18

JAVA - 컬렉션 프레임 워크 (Collections Framework), List, Set, Map ... (1) 그 중 List

- 컬렉션 프레임 워크에는 대표적으로 3개의 인터페이스가 정의되어 있다. 1. List 2. Set 3. Map - List와 Set 인터페이스는 조상 클래스로 Collention 인터페이스를 가지고 있다. 1. List List 인터페이스는 1) 순서가 있고, 2) 데이터의 중복을 허용한다. - 구현 클래스에는 1) ArrayList 2) LinkedList 3) Stack 등 여러가지 클래스가 있다. 2. Set Set 인터페이스는 1) 순서를 유지하지 않고, 2) 데이터의 중복을 허용하지 않는다. - 구현 클래스에는 1) HashSet 2) TreeSet 등 여러가지 클래스가 있다. 3. Map Map 인터페이스는 1) 키(Key)와 값(Value)의 쌍(pair)으로 이루어진 데이터의 집합이다. ..

Programming/JAVA 2023.05.18

JAVA - Reflection

- 자바 리플렉션(Reflection)이란 컴파일된 자바 코드에서 역으로 클래스를 불러서 메소드(Method) 및 변수(Field)를 구해오는 방법으로 클래스를 동적 로딩하여 사용할 때 많이 사용되고 디컴파일할 때에도 자주 사용되는 기법이다. MyClass myClass = new MyClass("asdf") String myName = myClass.getMyName(); 이런식으로 사용되는데, 이를 Reflection 으로 풀어보면 아래처럼 된다. 먼저 클래스(Class)를 불러오고, 생성자(Constructor)를 구하고, 생성자에 인자를 넘겨 생성자를 만들고 메소드를 얻어와서 invoke() 함수로 실행하는 과정을 거친다. 이를 Reflection 으로 풀어보면 아래처럼 된다. Class myCl..

Programming/JAVA 2023.05.14

JAVA - Class 클래스

- 자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일로 생성된다. - class 파일에는 멤버변수, 메서드, 생성자 등 객체의 정보가 포함되어 있는데 Class 클래스는 이 class 파일에서 객체에 정보를 가져올 수 있다. Class c1 = String.class; String str = new String(); Class c2 = str.getClass(); Class c3 = Class.forName("java.lang.String"); - Class 클래스는 위와 같은 방법으로 불러올 수 있고 그 중에 forName을 통해 가져오는 방법이 많이 사용되고 이를 동적 로딩이라고 부른다. - 동적 로딩이라고 부르는 이유는 보통 다른 클래스 파일을 불러올 때는 컴파일 시 스태틱에 그 클래스 ..

Programming/JAVA 2023.05.14
728x90