mjeongriver
Optional 과 null
TIL/Java 2023. 6. 22. 20:39

런타임에서 발생하는 NullPointException 방어를 위해 만들어둔 로직체크는 코드의 가독성과 유지 보수성이 떨어진다. 어떻게 null 을 다루면 좋을 지에 대한 해결책을 함수형 언어에서 찾았다. 함수형 언어는 존재하지 않을 수도 있는 값에 대한 별도의 타입을 가지고 있다. 개발자들은 여러가지 API 를 통해 간접적으로 값에 접근할 수 있다. 자바는 함수형 언어로부터 영감을 받아 자바 8에 처음 Optional 이 도입 되었다. java.util의 Optional는 java 8부터 지원하는 객체를 감싸는 래퍼 클래스(Wrapper class)이다. 객체를 Optional 안에 넣어서 한 번 감싸는데 이 때 객체는 null일 수도 있고 null이 아닐 수도 있다. Optional을 사용함으로써 Op..

article thumbnail
StringBuffer, StringBuilder가 string보다 성능이 좋은 이유와 원리
TIL/Java 2023. 5. 15. 15:39

1) String 먼저 String과 다른 클래스(StringBuffer, StringBuilder)의 차이점은 두 문자열 클래스의 아주 기본적인 차이는 String은 immutable(불변), StringBuffer, StringBuilder는 mutable(변함)에 있습니다. String은 문자열을 대표하는 것으로 문자열을 조작하는 경우 유용하게 사용할 수 있습니다. 문자열, 숫자, char 등은 concat할 때 StringBuffer, StringBuilder를 사용할 수 있습니다. 단, 복잡한 경우 의미가 있고, 단순한 경우에는 굳이 StringBuffer, StringBuilder를 쓰지 않고 + 연산자를 활용해 직접 합지면 됩니다. String 객체는 한번 생성되면 할당된 메모리 공간이 변하..

article thumbnail
day25-java
TIL/Java 2022. 10. 31. 09:42

IO: 파일 입출력, 네트워크, 화면 출력- 시간이 오래 걸리는 작업(스레드나 비동기로 처리해야 함) 연산: 시간이 짧게 걸리는 작업 1. Multi Thread - 2개 이상의 스레드가 수행중인 상황, 대부분의 경우 1) Priority(우선 순위): 누가 언제, 자주 2) Thread Group: 여러개의 스레드 관리, semaphore 3) Mutual Exclusion(상호 배제) - 하나의 스레드가 사용 중인 공유자원은 다른 스레드가 수정할 수 없다 - Lock과 synchronized로 해결 4) 생산자와 소비자 문제 - wait와 notification으로 해결 5) Dead Lock - 결코 발생할 수 없는 사건을 무한정 기다리는 것 2. 정규 표현식(Regular Expression) 1..

article thumbnail
day24-java
TIL/Java 2022. 10. 28. 17:23

1. Nested class(내포 클래스) - 클래스 안에 존재하는 클래스 - 자바는 클래스 안에 클래스를 생성하는 문법을 지언 1) Inner Class - 클래스 안에 존재하는 클래스 - 클래스 내부에서만 사용할 목적으로 생성 - 일반 클래스는 접근 지정자가 package(접근 지정자가 없는 경우) 와 public 만 가능하지만 inner class에서는 private와 protected도 가능 - 클래스가 컴파일 되었을 때는 외부 클래스 이름$내부 클래스 이름.class 2) Static Inner Class - class 앞에 static을 붙이는 클래스 - 내포 클래스에 static 멤버가 있으면 일반 inner class는 에러 발생 - 내포 클래스에 static 멤버가 있는 경우 인스턴스 생..

article thumbnail
day23-java
TIL/Java 2022. 10. 27. 18:09

- 입출력 할 때에는 예외처리 알아둘 것(batch) - window r-cmd - 메모 파일 드래그 해서 넣으면 경로 나옴 ** Java Input/Output - java.io 패키지에서 담당 1. 기반 지식 1)디렉토리 구분 기호 - Windows: \ - Windows 이외: / - 직접 지정하면 운영체제 별로 따로 설정 – File.seperator를 이용하면 현재 운영체제의 구분 기호를 사용할 수 있음 2)경로 1>절대 경로: 루트로부터의 위치 Windows → 루트드라이브:\디렉토리경로\파일이름 Web → 프로토콜://자원경로 그 이외의 경우 → /루트디렉토리/디렉토리경로/파일이름 Windows 경우는 디렉토리 기호가 \ 그 이외의 경우는 / 2>상대 경로: 현재 위치로부터의 경로 ./: 현..

article thumbnail
day22-java
TIL/Java 2022. 10. 26. 12:43

1. 형상 관리(Software Configuration Management): 변경 사항을 관리 - 소스 코드 버전 관리(VCS-Version, Control, System) - 문서에 작성 2. stack: list구조(Last In First out) - 자료구조에 제너릭이 적용되어 있다. 데이터 삽입: push push(10) push(20) 데이터 가져오기 : pop - top의 위치의 데이터를 삭제하고 가져옴 pop(): 20 pop(): 10 pop() underflow: 데이터가 없는데 pop overflow: 더 이상 저장할 공간이 없는데 push 용도: 함수의 데이터 저장 - 삼단 네이밍으로 이름 지을 수 있도록 할 것 3. API collection Class 1. list 1) st..

article thumbnail
day21-java
TIL/Java 2022. 10. 25. 17:52

1.Arrays 클래스 - binarySearch 메서드: 제어검색(정렬이 된 상태에서 검색을 수행) 중에 이분 검색을 수행해서 데이터가 존재하면 그 데이터의 위치를 리턴하고 존재하지 않으면 음수를 리턴하는 메서드 도큐먼트: java.util. → Arrays * 실습: 문자열 배열에서 문자열의 위치 찾기 2. Fibonacci 수열 1) 피보나치 수열 - 첫번째와 두번째 데이터는 무조건 1으로 고정 - 세번째부터는 앞의 2개의 항의 합(규칙은 3번째 부터) ex) 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 2) 재귀를 이용한 해결 - 시간이 오래 걸리지만(처리 속도가 느림) 이해하기는 쉬움 - 하노이의 탑 3) 재귀를 이용하지 않고 해결 - 시간을 단축할 수 있지만 이해하기가 어려울 수..

article thumbnail
day20-java
TIL/Java 2022. 10. 24. 18:43

Wrapper class → java의 기본 자료형을 클래스화 한 클래스 byte, int... Byte(일반화 가능) object(자바의 최상위 클래스)로부터 상속을 받고, 발전 시켜서 generic Byte, Short, Charactor, Integer, Long, Float, Double, Boolean 어떻게 기본 자료형의 데이터를 wrapper로 바꿀 것인지 Wrapper를 어떻게 기본 자료형으로 바꿀 건지 문자열과 wrapper의 변환 int x = 10; new Integer(x); 생성자를 불러서 변환 했었음 Integer i = 10; 실제로 이렇게 썼지만 내부적으로는 10이 new Integer(10); 이렇게 실행 됨 int x = i; 문자열을 wrapper로 할 때는 생성자를 이..

검색 태그