전체 글35 JAVA 공부일기1-15 Java의 정석 기초편 Chapter14 람다와 스트림 1. 람다식 메서드를 하나의 식으로 표현한 것. 메서드를 람다식으로 표현하면 이름과 반환값이 없어지므로 익명함수라 부름. 자바에서 모든 메서드는 클래스 내에 포함되어야 하므로 사실 람다식은 익명 클래스의 객체와 동등하다. *함수와 메서드의 차이: 근본적으로 동일. 함수는 일반적 용어, 메소드는 객체지향적 개념. 함수는 클래스에 독립적, 메소드는 클래스에 종속적. 람다식이 함수형 언어에서 왔기 때문에 용어 혼용되어 사용. 람다식 작성법 방법 메서드 람다식 메서드에서 이름과 반환타입을 제거하고 매개변수 선언부와 몸통 사이에 '->' 추가 int max(int a, int b){ return a>b ? a : b; } (int a, int b) -> { .. 2023. 8. 23. JAVA 공부일기1-14 Java의 정석 기초편 Chapter13 쓰레드 1. 프로세스와 쓰레드 프로세스: 실행 중인 프로그램. 실행에 필요한 메모리를 할당받아 프로세스가 됨. 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원, 그리고 쓰레드로 구성. 쓰레드: 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것. 쓰레드는 사용자 쓰레드와 데몬 쓰레드가 있음. 데몬쓰레드는 다른 일반 쓰레드의 작업을 돕는 보조적인 역할 수행. 2. 멀티쓰레딩의 장단점. 장점: cpu 사용률 향상. 자원 효율적 사용. 사용자에 대한 응답성 향상. 작업이 분리되어 코드 간결. 단점: 동기화(synchronization), 교착상태(deadlock) 문제 고려 필요. 3. 쓰레드의 구현과 실행. 쓰레드 구현 방법: Thread클래스 .. 2023. 5. 31. JAVA 공부일기2-3 모던 자바 인 액션 Chapter3 람다 표현식 3.1. 람다란 무엇인가? 람다 표현식: 메서드로 전달할 수 있는 익명 함수를 단순화한 것. 파라미터, 화살표, 바디로 이루어짐. 3.2 어디에, 어떻게 람다를 사용할까? 함수형 인터페이스 함수형 인터페이스: 하나의 추상메서드를 지정하는 인터페이스. 람다 표현식으로 함수형 인터페이스의 추상 메서드 구현을 직접 전달할 수 있으므로, 전체표현식을 함수형 인터페이스의 인스턴스(함수형 인터페이스를 구현한 클래스의 인스턴스)로 취급할 수 있음. @FunctionalInterface Runnable r1 = () -> System.out.println("Hello World 1"); //람다 사용 Runnable r2 = new Runnable(){ //익명 클래스 .. 2023. 5. 17. JAVA 공부일기2-2 모던 자바 인 액션 Chapter2 동작 파라미터화 코드 전달하기 동작 파라미터화를 이용하면 자주 바뀌는 요구사항에 효과적으로 대응. (동작파라미터화: 어떻게 실행할 것인지 결정하지 않은 코드 블록. 코드 블록은 나중에 프로그램에서 호출.) 2.1 변화하는 요구사항에 대응하기 가정: 농장 재고목록 애플리케이션에 리스트에서 녹색 사과 필터링 기능 추가. 2.1.1 첫 번째 시도: 녹색 사과 필터링 → 농부가 변심해 빨간 사과를 요구 등 다양한 변화에 대응x. 거의 비슷한 코드가 반복 존재한다면 그 코드를 추상화. 2.1.2 두번째 시도: 색을 파라미터화 → 색과 무게를 파라미터화 함. 하지만 목록 검색, 각 사과에 필터링 조건을 적용하는 부분의 코드가 중복. 2.1.3 세 번째 시도: 가능한 모든 속성으로.. 2023. 5. 14. JAVA 공부일기2-1 모던 자바 인 액션 Chapter1 자바8,9,10,11: 무슨 일이 일어나고 있는가? 1.1 역사의 흐름은 무엇인가? 자바 역사를 통틀어 가장 큰 변화가 자바 8에서 일어남→ 간결한 코드, 멀티코어 프로레서의 쉬운 활용. 스트림 API 메서드에 코드를 전달하는 기법 인터페이스의 디폴트 메서드 1.2 왜 아직도 자바는 변화하는가? 프로그래밍 언어는 마치 생태계와 닮아있어 새로운 언어가 등장하면서 진화되지 않은 기존 언어는 도태되고 사라짐. 자바는 처음부터 많은 유용한 라이브러리를 포함한 잘 설계된 객체지향 언어로 시작함. (+JVM의 업데이트로 경쟁언어와 자바가 상호동작함. 또한 다양한 임베디드 컴퓨팅 분야에도 널리 사용됨.) 프로그래밍 언어 생태계에 변화의 바람이 불기 시작. 빅데이터를 효과적으로 처리.. 2023. 5. 10. JAVA 공부일기1-13 Java의 정석 기초편 Chapter12 지네릭스, 열거형, 애너테이션 1. 지네릭스(Generics) 지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능. 객체 타입을 컴파일 시 체크하기 때문에 객체의 타입 안정성을 높이고, 형변환의 번거로움이 줄어듦. class Box {} → Box : 지네릭 클래스. 'T Box'라고 읽음. → T : '타입 변수' or '타입매개변수'. 임의의 참조형 타입을 의미. → Box : '원시 타입'. Box b = new Box(); → Box : '지네릭 타입 호출'. 타입 매개변수에 타입을 지정하는 것. → String: '매개변수화된 타입'. 대입된 타입. * 컴파일 후에 Box은 원시타입인 Box로 바뀜. 즉.. 2023. 5. 7. 이전 1 2 3 4 ··· 6 다음