Study Memos (206) 썸네일형 리스트형 [남궁성 '자바의 정석'] 164~171강 ※ 이 글은 남궁성 저자의 '자바의 정석' 164~171강을 수강한 후 정리한 내용입니다. 1. 람다식 iterate(), generate() iterate()는 이전 요소를 seed로 해서 다음 요소를 계산한다. Stream evenStream = Stream.iterate(0, n -> n + 2); // 0, 2, 4, 6, ... generate()는 seed를 사용하지 않는다. Stream randomStream = Stream.generate(Math::random); Stream oneStream = Stream.generate(()->1); // 1, 1, 1, 1 ... 2. 스트림 중간 연산의 핵심은 map()과 flatmap() 3. 스트림 중간 연산 - sorted() 연산 Comp.. [남궁성 '자바의 정석'] 156~163강 ※ 이 글은 남궁성 저자의 '자바의 정석' 156~163강을 수강한 후 정리한 내용입니다. 1. 임계영역 : 한 번에 한 개의 쓰레드만 접근 가능한 영역 synchronized로 임계영역을 설정하는 방법 2가지 public synchronized void calcSum(){ // Do Something } synchronized(참조변수){ // Do Something } 2. wait()과 notify() 동기화의 효율을 높이기 위해 사용 Object 클래스에 정의되어 있으며 동기화 블록 내에서만 사용 가능하다. wait(): 객체의 lock을 풀고 쓰레드를 해당 객체의 waiting pool에 넣는다 notify(): waiting pool에서 대기중인 쓰레드 중의 하나를 깨운다. notifyAll(.. [남궁성 '자바의 정석'] 132~155강 ※ 이 글은 남궁성 저자의 '자바의 정석' 132~155강을 수강한 후 정리한 내용입니다. 1. HashTable은 old 버전, HashMap은 new 버전 HashTable은 동기화가 처리되어 있고, HashMap은 동기화가 되어있지 않다. 2. TreeMap은 TreeSet과 비슷한 특성을 가졌다. 이진탐색트리로 구성되어 있다. TreeSet이 내부적으로는 TreeMap으로 구현되어 있다. 3. 순서를 유지할 필요가 있을 땐 LinkedHashMap을 쓴다. 4. HashMap은 데이터가 많아도 검색이 빠르다. 해싱기법으로 데이터를 저장하기 때문. 키가 중복되어 들어갈 경우 최근 값으로 덮어써진다. 4. 해싱(Hashing) 해시 함수로 해시 테이블에 데이터를 저장 & 검색 해시 테이블은 배열과 링.. [남궁성 '자바의 정석'] 112~131강 ※ 이 글은 남궁성 저자의 '자바의 정석' 112~131강을 수강한 후 정리한 내용입니다. 1. 래퍼(Wrapper) 클래스 8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스. 객체지향 언어인 자바에서 객체가 아닌 기본형을 사용하는 이유는 성능 때문. 2. Number 클래스 Long => 10^19 Double => 10^308 BigInteger => Long보다 더 큰 정수 BigDecimal => Double보다 더 큰 실수 3. 오토박싱 & 언박싱 오토박싱: 기본형 -> 래퍼클래스 언박싱: 래퍼클래스 -> 기본형 JDK 1.5 이전에는 기본형과 참조형간의 연산이 불가능했었다 4. java.util.Date 클래스 1995년 말 JDK 1.0 버전부터 사용했기 때문에 Date 메서드는 거의 de.. [남궁성 '자바의 정석'] 94~111강 ※ 이 글은 남궁성 저자의 '자바의 정석' 94~111강을 수강한 후 정리한 내용입니다. 1. 내부 클래스의 장점 1) 내부 클래스에서 외부 클래스의 멤버들에 쉽게 접근할 수 있다. 2) 코드의 복잡성을 줄일 수 있다. (캡슐화) 2. JDK 1.8부터는 final 키워드를 생략해도 값이 안 바뀌면 컴파일러가 상수 취급한다. 원래 JDK 1.8 이전의 자바에서 외부 클래스의 지역 변수는 final이 붙은 변수(상수)만 접근 가능했다. 그래서 final 키워드를 생략하면 무조건 에러가 났었는데 JDK 1.8 이후에는 해당 변수가 한번도 변하지 않으면 에러가 나지 않는다. (JAVA가 알아서 final 취급하도록 변경됐기 때문) 3. 상수는 따로 관리하고 있어서 함수를 빠져나가도 메모리에 상수가 남아있다. .. [남궁성 '자바의 정석'] 76~93강 ※ 이 글은 남궁성 저자의 '자바의 정석' 76~93강을 수강한 후 정리한 내용입니다. 1. java.lang 패키지의 클래스는 import하지 않고도 사용할 수 있다. 2. 객체지향에서는 다형성이 거의 원탑으로 중요하다. 3. instanceof 연산자는 참조변수의 형변환 가능여부 확인에 사용한다. 형변환 가능하면 true를 리턴함. 형변환 전에는 반드시 instanceof로 형변환 가능한지 확인하고 진행하자. 4. 다형성 장점 1) 다형적 매개변수 : 부모 매개변수로 여러 자식 매개변수를 받을 수 있음 2) 하나의 배열에 여러 종류 객체 저장 가능 5. 인터페이스는 추상 메서드의 집합 (프로그래밍 관점) 인터페이스: 인스턴스 변수를 가질 수 없고 추상 메서드'만' 모아놓음 (JDK 1.8 이전까지는... [남궁성 '자바의 정석'] 61~75강 ※ 이 글은 남궁성 저자의 '자바의 정석' 61~75강을 수강한 후 정리한 내용입니다. 1. static 메소드(클래스 메서드)는 일반적으로 사용하던 인스턴스 메서드와 다르다. 1) 객체 생성없이 '클래스이름.메서드이름()'으로 호출 2) 인스턴스 멤버(instance variable, instance method)와 관련없는 작업을 하는 메서드 3) 메서드 내에서 인스턴스 변수 사용 불가 2. 생성자에서 다른 생성자 호출시 "첫 줄"에서만 사용 가능. 안그럼 에러난다. 그리고 생성자에서 다른 생성자를 호출하려면 함수이름 대신 this()로 호출해야 한다. 참조변수 this랑은 전혀 다르니까 연관짓지 마라. 3. 프로그래밍은 설계 90 + 코딩 10 설계는 그리기이다. 그리기를 많이 해봐야 잘 그릴 수 .. [남궁성 '자바의 정석'] 31~60강 ※ 이 글은 남궁성 저자의 '자바의 정석' 31강 ~ 60강을 수강한 후 정리한 내용입니다. 1. switch-case 문에서 case문의 값은 정수, 상수(문자 포함), 문자열만 가능하다. 2. 중첩 반복문의 바깥쪽 반복문에 이름(라벨)을 붙여주면 중첩 반복문 내부에서 break, continue 로 중첩 반복문을 한번에 빠져나갈 수 있다. 실제론 사용 안 함. 3. 배열은 기본적으로 0으로 초기화된다. 4. String 클래스의 내용은 변경될 수 없다. (Read Only) 복사가 일어날 뿐이다. 5. 자주쓰는 Arrays 함수 Arrays.toString(arr); // 1 차원 배열 Arrays.deepToString(arrDimentional); // 다차원 배열 Arrays.equals(arr.. 이전 1 2 3 4 ··· 26 다음