매개변수의 특징 - 메소드 호출 시 선언되어, 전달되는 값을 저장한다. - 매개변수가 선언된 메소드 내에서만 유효한 변수이다. 매개변수가 두개인 메소드, 매개변수가 존재하지 않는 메소드 값을 반환하는 메소드 키워드 return이 지니는 두 가지 의미 출처 : 윤성우의 열혈 Java 프로그래밍
클래스 = 데이터 + 메소드 = 모든 프로그램은 다음 두 가지로 이뤄진다. 데이터 : 프로그램상에서 유지하고 관리해야 할 데이터 기능 : 데이터를 처리하고 조작하는 기능 클래스의 구성과 인스턴스화 참조변수 선언과 인스턴스의 생성 참조변수의 특성 참조변수의 매개변수 선언 참조변수에 null 대입 생성자 출처 : 윤성우의 열혈 Java 프로그래밍
정보 은닉 정보를 은닉해야 하는 이유 정보의 은닉을 위한 private 선언 접근 수준 지시자 public protected private default 캡슐화 캡슐화가 이뤄지지 않은 코드 캡슐화가 잘 이뤄진 코드 : 하나의 클래스로 캡슐화 완성하기 캡슐화가 잘 이뤄진 두번째 코드 : 포함 관계로 캡슐화 완성하기 출처 : 윤성우의
static 선언을 붙여서 선언하는 클래스 변수 > ###### 인스턴스 변수는 인스턴스가 생성되었을 때 생성된 인스턴스 안에 존재하는 변수이다. 그러나 클래스 변수는 인스턴스의 생성과 상관없이 존재하는 변수이다 선언된 클래스의 모든 인스턴스가 공유하는 클래스 변수(static 변수) 클래스 변수의 접근 방법 클래스 변수의 초기화 시점과 초기화 방법...
한 클래스 내에 동일한 이름의 메소드를 둘 이상 정의하는 것은 허용하지 않지만 매개변수의 선언이 다르면 가능하다. 이것을 오버로딩이라 한다. 메소드 오버로딩 메소드 오버로딩 조건 오버로딩된 메소드를 호출할 때에는 전달인자 자료형과 매개변수의 자료형을 일치시키는 것이 좋다. 생성자도 오버로딩의 대상 this 키워드 this를 이용한 다른 생성자의 ...
String StringBuilder 클래스 StringBuffer StringBuilder 공통점과 차이점 정리
콘솔은 컴퓨터를 대상으로 데이터를 입출력하는 장치를 총칭하는 말이다. 따라서 킵드와 모니터도 콘솔 입출력의 장치에 해당한다. 콘솔 출력 System.out.println & System.out.printf 콘솔 입력 Scanner 클래스의 키보드 적용, 메소드들
1차원 배열의 이해와 활용 > ###### 배열은 '자료형이 같은 둘 이상의 값'을 저장할 수 있는 메모리 공간을 의미한다 그리고 배열은 그 구조에 따라서 '1차원 배열'과 2차원 이상의 '다차원 배열'로 나뉜다. 1차원 배열의 생성 방법 배열을 대상으로 한 값의 저장과 참조 배열을 생성과 동시에 초기화하기 배열의 참조 값과 메소드 배열의 초기화...
상속의 기본 문법 이해 상속에 대한 매우 치명적인 오해 > ###### 상속의 코드는 재활용을 묵적으로 사용하는 문법이 아니다. 연관된 일련의 클래스들에 대해 공통적인 규약을 정의할 수 있다. 상속의 기본적인 특성 상속의 관계의 UML구도  이름을 대상으로 instanceof 연산을 할 수...
자바 예외처리의 기본 자바에서 말하는 예외 예외의 처리를 위한 try~catch try로 감싸야 할 영역의 결정 둘 이상의 예외를 처리하기 위한 구성 Throwable 클래스와 예외처리의 책임 전가 예외 상황을 알리기 위한 정의된 클래스의 종류 예외처리에 대한 나머지 설명들 예외 클래스의 구분 Err
자바 가상머신의 메모리 모델 가상머신은 운영체제 위에서 동작한다 자바 가상머신의 메모리 메소드 영역 스택 영역  > ###### 래퍼 클래스의 이름이 의미하듯이 "감싸는 클래스"이다. 그리고 래퍼 클래스가 감싸는 대상은 정수, 실수, 문자와 같은 기본 자료형의 값이다. 기본 자료형의 값을 감싸는 래퍼 클래스 래퍼클래스의 정의 래퍼 클래스의 두가지 기능 오토 박싱 & 오토 언 박싱 Number 클래스와 래퍼 클래스의 st...
제네릭의 표현 방식 타입 매개변수의 이름은 짓기 나름이다. 일반적으로 두 가지 규칙을 지켜서 이름을 짓는다 한 문자로만 이름을 짓는다 대문자로만 이름을 짓는다 대표적인 5가지 매개변수 E : Element K : Key N : Number T : Type V : Value > ##### 제네릭은 클래스 전부가 아닌 일부 메소드에 대해서만 제네릭으로 ...
제네릭 클래스도 상속이 가능하다. 와일드카드 선언 제네릭 메소드와 와일드 카드 메소드의 차이 와일드카드의 상한과 하한의 제한 상한 제한된 와일드카드 하한 제한된 와일드카드 와일드카드 제한의 이유 상한 제한의 목적 >###### 정리 하한 제한의 목적 > ###### 정리 제한된 와일드
리스트 기반 자료구조는 열차 칸을 더하고 빼는 형태의 자료구조이다. 인스턴스 저장 : 열차 칸을 하나 더한다, 인스턴스 삭제 : 해당 열차 칸을 삭제한다. List 자료구조의 구성 ArrayList vs LinkedList ArrayList의 장단점 장점 : 저장된 인스턴스의 참조가 빠르다 단점 : 저장 공간을 늘
저장된 인스턴스의 순차적 접근 방법 1 : for - each문의 사용 저장된 인스턴스의 순차적 접근 방법 2 : 반복자 Iterator 활용 > ##### 이러한 반복자는 생성과 동시에 첫 번째 인스턴스를 가리키고 next가 호출될 때마다 가리키는 대상이 다음 인스턴스로 옮겨진다. 그렇다면 반복자를 원하는 때에 다시 첫번째 인스턴스를 가리키게 하려면 ...
배열보다는 컬렉션 인스턴스가 좋다. 인스턴스의 저장과 삭제가 편하다. 반복자를 쓸 수 있기 때문이다. 배열처럼 선언과 동시에 초기화 컬렉션 인스턴스를 생성할수 있다. 인자로 전달된 인스턴스들을 저장한 컬렉션 인스턴스의 생성 및 반환 이렇게 생성된 인스턴스들은 Immutable(추가 삭제 불가)한 인스턴스이다. 고정임. 추가 삭제가 필요한 경우. 예제 ...
Set을 구현하는 클래스의 특성과 HashSet클래스 Set 인터페이스를 구현하는 제네릭 클래스의 특성 두 가지를 정리하면 다음과 같다 저장 순서가 유지되지 않는다. 데이터 중복 저장을 허용하지 않는다. 해쉬 알고리즘과 hashcode메소드 > 앞서 보인 7799를 담고 있는 두 인스턴스가 서로 다른 인스턴스로 간주된 이유 > "인스턴스가
Key-Value 방식의 데이터 저장과 HashMap 클래스 > ##### Key는 지표이므로 중복될 수 없다. 반면 Key만 다르면 Value는 중복되어도 상관없다. HashMap 순차적 접근 방법 TreeMap 순차적 접근 방법
정렬 Sort 들어가기 앞서 , 에 대해서 복습해보자. >
정렬 Comparator 기반 들어가기 앞서 , 에 대해서 복습해보자. > ###### " 매개변수 c를 대상으로는 T형 인스턴스를 넣는(전달하는(Set)) 메소드 호출만 OK. 찾기 binarySearch 찾기 : Comparator 기반 복사하기 copy
열형은 자바 5에서 추가된 자료형으로 '의미가 부여된 이름'을 갖는 '상수' 선언에 그 목적이 있다. 인터페이스 기반의 상수 자료형의 부여를 돕는 열거형 > ###### 앞서 보인 문제점의 해결을 위해서 자바 5에서 열거형이 소개되었다. 열거형의 정의는 다음과 같다 클래스 내에 정의가 가능한 열거형의 정의 > ###### 특정 클래스 내에서만...
매개변수의 가변 인자 선언과 호출 > ###### 메소드의 매개변수를 선언할 때 '가변 인자 선언'을 하면 전달되는 인자의 수에 제한을 두지 않을 수 있다. > ###### vargs는 배열을 참조하고 있다. 때문에 length에 접근하여 그 길이를 확인할 수 있다. 가변 인자 선언에 대한 컴파일러의 처리
다음과 같이 클래스 안에 또 다른 클래스를 정의할 수 있다. 이렇게 클래스 내에 정의된 클래스를 가리켜 '네스티드 클래스'라 하고 이를 감싸는 클래스를 가리켜 '외부 클래스'라 한다. 네스티드 클래스의 구분 기본적으로 클래스 내에 정의되는 모든 클래스를 가리켜 '네스티드 클래스'라 하는데, 네스티드 클래스는 static의 선언 여부를 기준으로 다음과 같...
람다의 이해 > ###### 람다를 사용하면 코드를 줄일 수 있다.그렇게 만들어진 코드는 가독성도 뛰어나다 그러나 이러한 장점을 누리려면 먼저 람다에 익숙해져야 한다. > > ###### '람다'와 '익명 클래스'는 분명 다르다. 그러나 둘 다 인스턴스의 생성으로 이어지고. 람다식이 익명 클래스의 정의를 일부 대체하기 때문에 익명 클래스의 정의를 기반으...
인스턴스보다 기능 하나가 필요한 상황을 위한 람다 > ###### 기능 하나를 정의해서 전달해야 하는 상황 > ###### 잠시 후에 람다식 기반으로 바꾸고 그전에 람다에 대해 알아보자. 매개변수가 하나이고 반환하지 않는 람다식. 매개변수가 둘이고 반환하지 않는 람다식 매개변수가 있고 반환하는 람다식. 매개변수가 없는 람다식. 함수형 인터페이스...
미리 정의되어 있는 함수형 인터페이스 > Predicate > ###### Predicate 인터페이스에는 다음 추상 메소드가 존재한다. Predicate를 구체화하고 다양화 한 인터페이스들. > ###### 제공한 이유는 불필요한 언박싱 오토박싱 과정을 막기위해서. Supplier > ###### Supplier 인터페이스에는 다음 추상 메...
람다식은 결국 메소드의 정의이다. 따라서 다음과 같이 생각해 볼 수 있다. 실제로 메소드 정의는 람다식을 대신할 수 있다. 메소드 참조라는 방법을 통해서 메소드 참조의 4가지 유형과 메소드 참조의 장점 static 메소드의 참조. > 인스턴스 메소드의 참조 1:인스턴스가 존재하는 상황에서 참조 > 인스턴스 메소드의 참조2 : 인스턴스 없이 인스턴...
Optional 클래스의 기본적인 사용 방법 Optional 클래스를 사용하여 if~else문을 대신하기 : map 메소드의 소개 Optional 클래스를 사용하여 if~else문을 대신하기 : orElse 메소드의 소개 Optional 클래스를 이용해서 개선해보기 (1) Optional 클래스를 이용해서 개선해보기 (2) Optional 클래스의...
스트림의 이해 스트림 생성하기 : 배열 스트림 생성하기: 컬렉션 인스턴스 중간연산 필터링과 맵핑 필터링 맵핑 필터링과 맵핑 합쳐서 사용해보기.
리덕션과 reduce 메소드 병렬 스트림 ![](https://images.velog.io/images/gustjtmd/post/b8820f78-4c7f-4e3d-8d98-782a8da2c651/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%B...
스트림의 생성 : 스트림 생성에 필요한 데이터를 직접 전달 DoubleStream, IntStream, LongStream 병렬 스트림으로 변경 스트림의 연결 중간연산 flatMap 중간연산 정렬 중간연산 루핑 최종연산 최종연산 forEach allMatch, anyMatch, noneMatch collect 병렬 스트림에서의 colle...
I/O 스트림에 대한 이해 그냥 '스트림'과 'I/O 스트림'의 차이는? > I/O 스트림 모델의 소개 I/O 모델과 스트림의 이해, 그리고 파일 대상의 입력 스트림 생성 입출력 스트림 관련 코드의 개선 바이트 단위 입출 및 출력 스트림 보다 빠른 속도의 파일 복사 프로그램 필터 스트림의 이해와 활용 바이트 단위로 데이터를 읽고 쓸줄은 알지...
파일 시스템 기본적인 파일 시스템 Paths와 Path 클래스 파일 및 디렉토리의 생성과 소멸 파일을 대상으로 하는 간단한 입력 및 출력 파일 및 디렉토리의 복사와 이동 NIO.2 기반의 I/O 스트림 생성 바이트 스트림의 생성 문자 스트림의 생성 NIO 기반의 입출력 NIO의 채널과 버퍼 성능 향상 포인트는 어디에? 파일 랜덤 접근
쓰레드의 이해와 쓰레드의 생성 쓰레드의 이해와 쓰레드의 생성 방법 쓰레드를 생성하는 첫번째 방법 쓰레드를 생성하는 두번째 방법 두개의 쓰레드를 생성해서 실행해보기 쓰레드의 동기화 쓰레드의 메모리 접근 방식과 그에 따른 문제점 동일한 메모리 공간에 접근하는 것이 왜 문제가 되는가? 첫번째 방법 동기화 메소드 두번째 방법 동기화 블록