리플렉션은 Class 타입으로 시작합니다. 도큐먼트 : https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html Class (Java Platform SE 8 ) Determines if the specified Class object represents a primitive type. There are nine predefined Class objects to represent the eight primitive types and void. These are created by the Java Virtual Machine, and have the same names as the primitive types tha docs.oracle.com 위의 ..
이 질문은 오래된 질문이지만 아직까지도 자바개발을 하는 개발자들이 자주 묻는 질문입니다. 여러가지 이유가 있지만 메모리, 동기화, 자료구조에 대한 이해도에 따라 대답이 달라지기도 합니다. 주요 이유를 알아보겠습니다. 1. String Pool에 대한 필요 String Pool은 자바의 힙영역에서 특수한 저장영역입니다. String 객체가 생성되고 만약 이미 기존에 같은 String 객체가 존재한다면 참조값은 새로운 객체가 아닌 기존의 String 객체로 정해지게 됩니다. 다음의 코드는 heap영역에 하나의 String 객체만을 만들게 될 것입니다. String string1 = “abcd”; String string2 = “abcd”; 원리는 아래의 그림과 같습니다. 문자열을 변경할 수 없는 경우, 하나..
멤버변수 - 클래스 변수라고도 하며 메소드에 선언된 것이 아닌 클래스의 필드에 선언된 변수. 로컬변수 - 메소드가 실행될 때만 사용되는 변수. 메소드 내부에 선언되어 있음. 람다식에서 클래스의 멤버변수 사용 - 람다식에서 this는 내부적으로 생성되는 익명객체의 참조가 아닌 람다식을 실행한 객체의 참조이다. - 바깥 객체와 중첩 객체의 참조를 얻어 필드값을 출력하는 예제. @FunctionalInterface public interface MyFunctionalInterface { public void method(); } public class UsingThis { public int outterField = 10; class Inner{ int innerField = 20; //Inner 클래스 멤버..
함수적 인터페이스 (@FunctionalInterface) - 모든 인터페이스는 람다식의 타겟타입으로 사용할 수 없다. (= 모든 인터페이스가 람다식으로 대입될 수 없다.) - 람다식은 하나의 메소드를 구현하는 것이기 때문에 인터페이스에는 구현될 단 하나의 추상메소드만 존재해야한다. - 그러기 위해서 사용하는 방식이 함수적 인터페이스. 인터페이스에 단 하나의 추상메소드만 있어야한다. - @FunctionalInterface 어노테이션은 컴파일러가 어노테이션이 있는 인터페이스의 추상메소드 개수를 세어 2개 이상인 경우 컴파일 오류를 낸다. - 그러나 어노테이션이 없다고 함수적 인터페이스가 아니라고는 하지 않는다. 단지 개발자의 실수를 방지하기 위한 체킹용 어노테이션이다. 매개변수와 리턴값이 없는 람다식 @..
수집 - 요소들을 필터링/매핑한 후 요소들을 수집하는 최종처리 메소드를 제공 - 필요한 요소만 컬렉션으로 담을 수 있고, 요소들을 그룹핑한 후 집계할 수 있음 예제를 위한 Student 클래스 public class Student implements Comparable{ public enum Sex {MALE, FEMALE} public enum City {Seoul, Pusan} private String name; private int score; private Sex sex; private City city; public Student(String name, int score) { super(); this.name = name; this.score = score; } public Student(St..
기본 집계 메소드 - 최종 처리 기능 - 요소들을 처리해서 카운팅, 합계, 평균값, 최대값, 최소값 등 하나의 값으로 산출 - 대량의 데이터를 가공해서 축소하는 리덕션. 기본 집계 메소드 예제 package Stream.middleprocess.zipgue; import java.util.Arrays; public class AggregateExample { public static void main(String[] args) { //배열선언 int[] temp = new int[] { 1,2,3,4,5 }; //카운트 long count = Arrays.stream(temp).filter(n -> n%2 ==0) .count(); System.out.println("2의 배수 개수 : "+count);..
x만큼 간격이 있는 n개의 숫자 문제 설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한 조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 입출력 예 x n answer 2 5 [2,4,6,8,10] 4 3 [4,8,12] -4 2 [-4, -8] 나의 풀이 class Solution { public long[] solution(long x, int n) { long[] answer = new long[n]; for(int i =0; i
정렬 - 중간 단계에서 요소를 정렬해서 최종 처리 순서를 변경할 수 있음. - 객체요소일 경우 클래스가 Comparable을 구현하지 않으면 ClassCastException 발생 Comparable 인터페이스를 구현한 Student 클래스 public class Student implements Comparable{ String name; int score; public Student(String name, int score) { super(); this.name = name; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public in..