Java 8

10. JAVA - LamDa

1. 람다식 1. 람다식이란 함수(메소드 == 기능 == 펑션) 형 프로그래밍이란 메소드를 만들고 만든 메소드를 통해서 데이터를 처리하는 기법. 메소드의 처리부에서는 정해진 방식은 존재하지 않고 데이터를 가공하거나 연산 또는 리턴등의 처리를 담당한다. 메소드 A와 메소드 B에서 같은 데이터를 처리해도 다른 결과가 나올 수도 있다. 이러한 현상을 데이터 처리의 다형성이라고 한다. 자바에서는 함수형 프로그래밍을 지원하기 위해서 람다식을 제공. 람다식은 데이터 처리부에서 데이터를 가공하거나 연산, 리턴 하는 함수 역할을 하는 매개변수를 갖는 중괄호 블록이다. ==> 함수형 인터페이스를 선언해주어야 한다. Spring에서 지원하는 인터페이스 중 무조건 람다식이나 익명개체로 구현되어야 하는 인터페이스들이 있어서 ..

9. JAVA - MultiThread

1. 멀티스레드 1. 스레드란? 운영체제에서는 프로그램 하나를 처리하는 데 프로세스라는 단위로 처리하게 된다. 프로그램을 동시에 여러 개를 사용할 때는 프로세스가 각각의 프로그램에 하나 씩 배정되어 멀티 프로세스로 처리한다. 이러한 기능을 멀티 태스킹이라고 부른다. 멀티 태스킹이 꼭 멀티 프로세스만을 의미하는 것은 아니다. 만약 크롬에서 하나의 탭에는 유튜브나 넷플릭스의 영상을 재생하고 다른 탭에서는 웹서핑을 진행하면 하나의 프로그램이 동시에 두 작업을 진행하게 되는데 하나의 프로세스만 할당이 되고 두 작업을 동시에 진행가능하게 해주는 개념이 멀티 스레드. 프로그램의 멀티태스킹은 멀티 프로세스. 프로그램 내부에 멀티태스킹은 멀티 스레드. 스레드는 프로그램의 흐름(코드의 흐름). 프로세스들은 독립적으로 존..

7. JAVA - Generic

1. 제네릭 1. 제네릭이란 자바 제네릭은 타입의 안정성과 재사용성을 높여주는 기능. 제네릭을 사용하면 클래스나 메소드를 정의할 때 타입을 지정하지 않고 인스턴스 생성할 때나 메소드를 호출할 때 타입을 지정하여 타입만 변경하여 계속 사용 가능. 제네릭을 사용하면 중복된 코드를 제거할 수 있고 유지보수성과 가독성이 좋아진다. 의미상의 제네릭 T : Type K : Key V : Value E : Element N : Number 2. 제네릭 클래스 제네릭 클래스는 클래스명 다음에 (타입매개변수) 을 붙여서 정의하는 클래스. 에는 어떤 클래스도 사용할 수 있다. 정의 public class Clss { List listT; T t; Map tMap; } 사용 Clss cl = new Clss(); 3. 제네..

6. JAVA - 컬렉션 프레임워크 (List, Map, Set ....)

1. 컬렉션 프레임워크 1. 컬렉션 프레임워크란 다량의 데이터(데이터 그룹)에 대한 표준화된 프로그래밍 방식을 제공해주는 클래스의 집합. 다양한 종류의 다량의 데이터를 다룰 수 있게 클래스들을 제공해준다.(List, Map, Set...) 컬렉션 프레임워크의 핵심 인터페이스 List : 순서가 있는 데이터의 집합. 데이터의 중복 허용. 상속받은 클래스로는 ArrayList, LinkedList, Vector, Stack... Map : 키와 값의 쌍으로 이루어진 데이터의 집합. 키의 중복은 허용되지 않고 값의 중복은 허용됨. 상속받은 클래스로는 HashMap, HashTable, TreeMap... Set : 순서를 유지하지 않으면서 중복도 허용되지 않는 데이터의 집합. 상속받은 클래스로는 HashSet..

5. JAVA - 중첩클래스 관련 정리

1. 중첩클래스 클래스 내부에 다른 클래스를 선언하는 것을 중첩클래스라고 한다. 중첩클래스의 종류는 정적 중첩 클래스, 내부 클래스, 지역 중첩 클래스, 익명 중첩 클래스가 존재한다. 정적 중첩 클래스(static nested class) 정적 중첩 클래스는 외부 클래스의 정적 멤버(static으로 선언된 변수, 메소드)와 같은 위치에 선언한다. 외부 클래스의 객체를 생성하지 않아도 자신의 인스턴스를 생성할 수 있다. 외부 클래스의 모든 멤버변수와 메소드에 접근할 수 있다. static으로 선언된 정적 중첩 클래스안에는 정적 멤버를 가질 수 있다. 정적 멤버들은 객체를 생성 안해도 접근 가능하지만 일반 멤버들은 객체를 생성해서 접근해야 한다. //정적 중첩 클래스의 객체 생성 NestedClass.Div..

4. JAVA - interface 관련 정리

1. 인터페이스 인터페이스는 추상클래스의 일종이다. 인터페이스는 추상클래스보다 추상화의 레벨이 더 높다.(더 깊게 추상화됨) 추상클래스는 멤버변수, 일반메소드, 추상메소드를 가질 수 있었는데 인터페이스는 멤버변수, 추상메소드만 가질 수 있다. 멤버변수도 무조건 final키워드로 상수인 변수만 가질 수 있다. 인터페이스가 가질 수 있는 요소의 정의 변수는 무조건 public static final으로 시작해야되는데 웃긴건 생략이 가능하다. 모든 메소드는 public abstract로 시작해야된다. 마찬가지로 생략가능. Java 1.8이상부터는 static 메소드와 default 메소드 사용가능. 인터페이스 정의 interface 인터페이스명 { int ; public void ~(); } 컴파일러가 int..

2. JAVA - 다형성 관련 정리

1. 다형성 다형성이라는 것은 많은 형태를 가질 수 있는 것을 의미한다. 자식클래스가 부모클래스를 상속받게 되면 자식클래스는 자식클래스의 형태도 가지면서 부모클래스의 형태도 가지게 된다. 부모클래스 형태의 변수에 자식클래스의 객체를 넣어서 사용하게 되면 하나의 변수로 다양한 기능을 만들 수 있다. 기능의 다양화는 오버라이딩을 통해 이뤄진다. 부모클래스에 존재하는 메소드를 오버라이딩을 통해 자식클래스에서 다양한 기능으로 만들어서 부모클래스 형태의 변수로 같은 메소드를 호출했을 때 서로 다른 결과나 기능을 나타나게 할 수 있다. 다형성을 이용하여 코드의 중복부분을 많이 줄일 수 있다.(공수절감효과) 2. 다형성의 장점 유연성: 여러 객체를 하나의 변수로 처리할 수 있어서 유연하게 객체를 변경할 수 있다. 확..

1. JAVA - static 관련 정리

1. static static은 해석하면 '정적인' 이라는 뜻을 갖고 있다. Java에서 정적이다라는 것은 메모리에서 삭제되지 않는 것을 의미한다. static 키워드를 이용하면 프로그램 시작부터 종료까지 삭제되지 않는 변수나 메소드를 만들 수 있다. 2. 인스턴스 변수와 메소드 지역변수는 선언된 {}블록 안에서만 사용이 가능하다. 인스턴스 변수와 인스턴스 메소드는 객체를 생성했을때 사용한 변수와 메소드. 일반적으로 클래스에 선언되어 있는 변수와 메소드를 의미함. 객체가 메모리에 저장되어 삭제되기 전까지 인스턴스 변수와 인스턴스 메소드를 사용할 수 있다. 3. 클래스 변수와 메소드 클래스 변수와 클래스 메소드는 어플리케이션 시작부터 종료까지 메모리에서 삭제되지 않고 계속해서 사용가능한 변수..