본문 바로가기

Languages

(25)
람다와 스트림 람다식 : 메서드를 하나의 '식(expression)'으로 표현한 것. 람다식은 함수를 간략하면서도 명확하게 표현할 수 있게 해준다. '익명함수'라고도 한다. 람다식 작성하기 람다식은 익명 클래스의 객체와 동등하다. 타입 f = (int a, int b) -> a > b ? a : b; //참조변수의 타입을 뭘로 해야 할까? 익명 객체의 주소를 f 라는 참조변수에 저장. 참조형이니까 클래스 또는 인터페이스가 가능하다. 그리고 람다식과 동등한 메서드가 정의되어 있는 것이어야 한다. 그래야 참조변수로 익명 객체의 메서드를 호출할 수 있기 때문이다. 556p 참고 컬렉션 프레임웍과 함수형 인터페이스 메서드 참조 하나의 메서드만 호출하는 람다식은 '클래스 이름 :: 메서드이름' 또는 '참조변수 :: 메서드이름'..
Java 쓰레드 (진행중) 프로세스와 쓰레드 : '실행 중인 프로그램' 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다. 프로세스 == 자원(데이터 + 메모리) + 쓰레드 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. 멀티쓰레딩의 장단점 장점 - CPU의 사용률을 향상시킨다. - 자원을 보다 효율적으로 사용할 수 있다. - 사용자에 대한 응답성이 향상된다. - 작업이 분리되어 코드가 간결해진다. 단점 - 여러 쓰레드가 같은 프로세스 내에서 자원을 공유하면서 작업을 하기 때문에 발생할 수 있는 동기화(synchronization), 교착상태(deadlock)와 같은 문제들이 생길 수 있다. 구현과 실행 : Thread클래스를 상속받는 방법과 Runnable인터페이스를 ..
열거형(enum), 어노테이션 열거형 : 여러 상수를 선언해야 할 때, 편리하게 선언할 수 있는 방법. java.lang.Enum 정의 enum Direction { EAST, SOUTH, WEST, NORTH } 열거형 상수간의 비교에는 '==' 사용가능 equals()도 가능. 비교 연산자는 사용이 불가능해서 compareTo메서드 사용. B.compareTo(A) : (A)와 B가 같으면 0, A보다 왼쪽이면 양수 오른쪽이면 음수로 표시. java.lang.Enum 컴파일러가 자동적으로 추가해주는 메서드 2개 static E[] values() static E valueOf(String name) 열거형에 멤버 추가 : Enum클래스에 정의된 ordinal()이 열거형 상수가 정의된 순서를 반환하지만, 이 값을 열거형 상수의 값..
Java 제네릭스(Generics) 제네릭스 : 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 장점 - 타입 안정성을 제공. - 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다. 용어정리 Box 제네릭 클래스. 'T의 Box' 또는 'T Box'라고 읽는다. T 타입 변수 또는 타입 매개변수.(T는 타입문자) Box 원시 타입 (row type) T는 메서더의 매개변수와 유사한 면이 있다. 다형성 : 제네릭 클래스의 객체를 생성할 때, 참조변수에 지정해준 제네릭 타입과 생성자에 지정해준 제네릭 타입은 일치해야 한다. 상속관계에 있어도 일치해야 한다. Iterator Iterator에도 제니릭스가..
컬렉션 프레임웍 컬렉션 프레임웍 : '데이터 군을 저장하는 클래스들을 표준화한 설계'를 뜻한다. 컬렉션, 다수의 데이터를 다루는데 필요한 다양하고 풍부한 클래스들을 제공하기 때문에 프로그래머의 짐을 상당히 덜어 주고 있으며, 또한 인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화되어 있기 때문에 사용법을 익히기에도 편리하고 재사용성이 높은 코드를 작성할 수 있다는 장점이 있다. 핵심 인터페이스 : 3가지 타입이 존재한다. List : 순서가 있는 데이터의 집합. 데이터의 중복을 허용. 예) 대기자 명단 구현클래스 : ArrayList, LinkedList, Stack, Vector 등 Set : 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않는다. 예) 양의 정수 집합, 소수의 집합 구현클래스..
java.lang 클래스 Object클래스 : 모든 클래스의 최고 조상 클래스 equals() : 매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 boolean값으로 알려 주는 역할 equals 메서드는 주소값으로 비교를 하기 때문에 두 value값이 10으로 같을지라도 비교한 결과는 false다. equals() 오버라이딩 value 의 값을 비교하고 싶다면 equals 메서드를 오버라이딩하여 사용하면 된다. hashCode() : 해싱 기법에 사용되는 '해시함수'를 구현한 것. 해싱은 데이터관리기법 중의 하나 .. 다량의 데이터를 저장하고 검색하는데 유용함. 검색 값 입력 >> 그 값이 저장된 위치 반환 String 클래스는 hashCode 메서드가 오버라이딩 되어 있기 때문에 문자열의 내용이 같은 str1과 str2..
예외처리 컴파일 에러 : 컴파일 할 때 발생하는 에러 런타임 에러 : 실행도중에 발생하는 에러 논리적 에러 : 실행은 되지만, 의도와 다르게 동작 printStackTrace() : 예외발생 다시의 호출스택에 있었던 메서드의 정보와 예외 메시지를 화면에 출력. getMessage() : 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있다. 예외 발생시키기 1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만듬 2. 키워드 throw를 이용해서 에외를 발생 Exception 인스턴스를 생성할 때 생성자에 String 을 넣어주면 Exception인스턴스 메시지로 저장된다. getMessage()를 이용해서 얻을 수 있다. 더 공부 채워넣기
객체 지향 프로그래밍이란? 객체지향 언어 코드의 재사용성이 높다. (상속) 코드의 관리가 용이하다. 신뢰성이 높은 프로그래밍을 가능하게 한다. 특징 : 캡슐화 , 상속 , 다형성 -캡슐화 : 객체의 필드, 메서드를 하나로 묶고, 실제 구현 내용을 감추는 것. 예를 들어 getter, setter / setter를 만들지 않고 생성자에 인자 값이 있는 생성자를 만들어서 사용. 접근 제한자를 사용하여 캡슐화된 멤버를 노출할지, 숨길지를 결정할 수 있다. - 상속 : 부모가 자식에서 자신(부모)가 가진 필드와 메서드를 하위 객체(자식)에게 물려주어 하위 객체가 사용 할 수 있도록 해준다. - 다형성 : 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다. 참고링크 객체란? : 세상에 존재하는 모든 것, 프로그..