Java
-
[Java] 메서드 참조란?Java 2022. 1. 25. 00:01
메서드 참조란? 메서드 참조는 람다 표현식이 단 하나의 메서드만을 호출하는 경우 해당 람다 표현식에서 불필요한 매개변수를 제거하고 사용할 수 있도록 해줍니다. 람다식으로 메서드를 간결하게 표현할 수 있는데 람다식을 더욱 간결하게 표현하는 방법 (단, 람다식이 하나의 메서드만을 호출하는 경우) 메서드 참조 예시 아래의 wrapper메서드는 문자열을 정수로 반환하는 일을 합니다. Integer wrapper(String s) { return Integer.parseInt(s); } 이를 람다식으로 표현해 보겠습니다 Function f = (String s) -> Integer.parseInt(s); 이를 메서드 참조로 표현해 보겠습니다 Function f = Integer::parseInt; 메서드 참조에서..
-
[Java] Math.random() vs java.util.Random 효율성 차이점 비교Java 2022. 1. 24. 00:01
두 함수는 모두 난수를 생성합니다. 난수란? 정의된 범위 내에서 무작위로 추출된 수를 일컫는다. 난수는 누구라도 그다음에 나올 값을 확신할 수 없어야 한다. 하지만 컴퓨터 과학 분야에서 말하는 난수는 보통 결정론적인 방법에서 생성된 난수이다. 특정 입력이나 조건에 따라 무작위로 선택된 것처럼 보이는 난수 또는 난수 열이 생성되며 그 생성 조건이나 입력이 같다면 그 결괏값은 항상 같다. 즉, 프로그래밍에서 난수란 정말 무작위로 추출된 수가 아닌 시스템적으로 추측하기 어렵게 임의의 수를 만들어서 적용하는 것을 말합니다. java.lang.Math.random() 기본 숫자 연상을 수행하기 위한 Math 클래스의 메소드입니다. 0.0
-
[Java] java.util.function 패키지란?Java 2022. 1. 22. 00:01
java.util.fuction 패키지란? JDK8부터 지원하며 자주 사용되는 함수형 인터페이스를 제공합니다. 함수형 인터페이스란? 1개의 추상 메서드를 갖고 있는 인터페이스로 익명 클래스나 람다식을 통해 사용할 수 있습니다. https://junuuu.tistory.com/65 java.util.function 패키지가 제공하는 인터페이스에 대해 알아보겠습니다. 가장 기본이 되는 함수 인터페이스 표만 보아서는 이해가 잘 안 될 수도 있습니다. T, R 등 제네릭스도 포함되어 있기 때문에 살짝 거부감도 들었습니다. Predicate 함수형 인터페이스를 예시를 통해 어떻게 사용되는지 살펴보겠습니다 Predicate isEmptyStr = s -> s.length() == 0; String str = "";..
-
[Java] 래퍼 클래스(Wrapper Class)란?Java 2022. 1. 20. 00:01
Optional에 대해 알아보고자 했을 때 래퍼 클래스라는 개념이 나와 알아보게 되었습니다. 래퍼 클래스(Wrapper Class)란? 간단하게 본론부터 말하자면 래퍼 클래스란 기본 타입을 객체화 클래스화 하여 클래스의 장점을 갖게 합니다. Wrapper는 번역해보면 포장지, 싸개 등의 의미를 가집니다. 의미 해석함으로써 통해 포장을하는 클래스? 어떤 것을 감싸는 클래스?라고 추측할 수 있습니다. 기본 타입이란? 자바의 자료형은 기본 타입과 참조 타입으로 나누어 집니다. 기본 타입 : byte, short, char, int, long, float, double, boolean 참조 타입 : class, interface,... 여기까지 이해하셨다면 래퍼 클래스는 int, float, double, bo..
-
[Java]람다식(Lambda expression)이란?Java 2022. 1. 17. 00:01
우선 자바에는 큰 변화가 두 번 있었는데 처음은 이전 시간에 다루었던 JDK1.5부터 추가된 제네릭스의 등장이며 또 한 번은 JDK1.8부터 추가된 람다식(Lambda expression)의 등장입니다. 자바는 객체지향 언어입니다. 하지만 람다식을 활용한다면 기존의 자바를 거의 변경하지 않고 함수형 언어의 기능까지 갖추게 해 줍니다. 람다식(Lambda expression)이란? 람다식(Lambda expression)은 메서드를 하나의 '식(expression)'으로 표현한 것입니다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환 값이 없어지므로, 람다식을 '익명 함수'라고도 합니다. '식(expression)'을 사용하여 하나의 메서드 인터페이스를 나타내는 명확하고 간결한 방법을 제공합니다. 람다..
-
[Java] 내부 클래스란?Java 2022. 1. 11. 00:01
내부 클래스(Inner Class)란? 클래스 안에 또 다른 클래스를 구성하는 것을 말합니다. class OuterClass { class InstanceInnerClass{ //Inner Member class //static member 선언 불가능 } static class StaticInnerClass{ //static class // instance member와 static member 선언 가능 int data1; static int data2; } void func() { class LocalInnerClass{ //Inner Local class int data; } } } OuterClass A = new OuterClass(); //외부 클래스 생성 A.InstanceInnerClas..
-
[Java] 상속(Inheritance)이란?Java 2022. 1. 6. 00:01
상속(Inheritance)이란? 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나입니다. 기본이 되는 클래스를 확장하여 새로운 클래스를 정의하는 것을 말합니다. Java의 클래스는 변수와 메서드로 구성되기 때문에 상속이란 기본이 되는 클래스에서 변수와 메서드를 물려받고 여기에 자식 클래스에서만 가지는 추가적인 특징을 추가합니다. 기본이 되는 클래스는 부모 클래스, 기본 클래스, 상위 클래스 등으로 불립니다. 상속된 클래스는 자식 클래스, 확장된 클래스, 파생 클래스, 하위 클래스로 불립니다. 여기서는 부모 클래스와 자식 클래스로 부르도록 하겠습니다. 다음 그림은 자바의 상속을 표현한 그림입니다. 그러면 상속을 왜 사용할까요? 기존의 작성된 클래스의 재활용하여 효율적이다. 자식 클래스 설계 시 중복되..
-
[Java] 오버로딩(Overloading)이란?Java 2022. 1. 5. 00:01
오버로드(Overload)란? Overload를 번역하면 초과 적재라는 뜻을 가지고 있는데 자바에서 오버로드란 어떤 의미로 사용되는 걸까요? 변수와 메서드의 차이점을 보면서 알아보겠습니다. 보통 변수와 달리 하나의 클래스에 동일한 이름의 메서드를 여러 개 정의할 수 있습니다. 하지만 변수 이름이 동일한 경우는 허용하지 않습니다. 변수의 이름이 동일한 경우 public class Employee { int age; String name; char grade; String grade; } char grade와 String grade는 데이터 타입이 다르지만 변수명이 동일하여 에러가 발생합니다. 클래스 안에 동일한 이름의 변수를 사용했을 때, 프로그램이 모호해지기 때문입니다. 메서드의 이름이 동일한 경우 pu..