목록개발공부/JAVA (62)
개발자 도전기
Lombok이란 Java 라이브러리로 반복되는 getter, setter, toString 등의 메소드 작성 코드를 줄여주는 기능을 한다. Model에서 자바빈의 property를 생성하기 위해 getter, setter 메소드를 모두 작성해야 하는 번거로움을 줄여준다. @Getter @Setter @Getter는 get 메소드, @setter는 set 메소드를 자동 생성한다 클래스 이름 위에 적용시키면 모든 변수들에 적용이 가능하고, 변수 이름 위에 적용시키면 해당 변수들만 적용된다 @Getter public class JavaBean{ @Setter private String name; private String company; private String city; } @AllArgsConstruct..
열거타입이란? Enum 몇가지로 한정된 값만을 갖는 타입이다. 한정된 값인 열거 상수를 가지고 열거 상수는 모두 대문자로 작성한다. public enum Week{ // 열거 타입 이름 // 열거 상수 목록 MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } 열거 타입의 사용 열거 타입도 하나의 데이터 타입이므로 변수를 선언하고 사용해야 한다. Week today; Week reservationDay; 열거 타입 변수에는 열거 상수를 대입할 수 있는데, '열거타입.열거상수' 형태로 작성한다. 또한 열거 타입은 참조 타입이므로 null 값도 대입할 수 있다 Week today = Week.SUNDAY; Week birthday = null; ..
서버와 클라이언트 -네트워크는 여러 컴퓨터들을 통신 회선으로 연결한 것을 말한다 -네트워크에서 서비스를 제공하는 프로그램을 서버라고 부른다 -서비스를 요청하는 프로그램을 클라이언트라고 부른다 -클라이언트가 서비스를 요청하고, 서버가 응답하는 방식으로 통신한다 IP주소와 Port번호 -IP주소란 네트워크 어댑트마다 할당되는 컴퓨터의 고유한 주소이다 -Port 번호란 운영체제가 관리하는 서버 프로그램의 연결 번호이다 -IP주소로 통신할 컴퓨터를 결정하고 Port 번호로 어떤 프로그램의 서버와 통신할지 결정한다 -IP주소 : Port번호 형태로 사용된다 TCP 네트워킹 -연결형 프로토콜로 상대방이 연결된 상태에서 데이터를 주고 받는다 -데이터가 순서대로 전달되며 손실이 발생하지 않는다 -IP와 함께 사용하기 ..
입출력 스트림 I/O Stream은 데이터 Input과 output을 실행할 수 있는 입출력 스트림으로 java.io 패키지에서 제공된다. 다음 두 종류로 구분할 수 있다 바이트 스트림 : 그림, 멀티미디어, 문자 등 모든 종류의 데이터 입출력할 때 사용 InputStream, OutputStream 문자 스트림 : 문자만 입출력할 때 사용 Reader, Writer 바이트 출력 스트림 OutputStream은 바이트 출력 스트림의 최상위 클래스로 추상 클래스이다. 모든 바이트 출력 스트림 클래스는 OutputStream 클래스를 상속받아 만들어진다 OutputStream이 추상 클래스이므로 객체는 OutputStream의 자식 객체를 사용하여 생성한다 IOException을 발생시키므로 예외 처리가 필..
멀티 스레드 멀티 태스킹이란 두 가지 이상 작업을 동시에 처리하는 것을 말함 하나의 스레드에서 멀티 태스킹을 할 수 있도록 한 것이 멀티 스레드 멀티 스레드에서 하나의 스레드의 오류는 다른 스레드에도 영향을 미친다 작업 스레드 생성 -Thread 클래스를 통해서 멀티 스레드를 구현할 수 있다. -스레드를 구현하려면 run() 메소드 내부에 스레드에서 실행될 코드를 구현해야 한다. -Thread 구현 객체의 start() 메소드를 호출하면 재정의된 run()을 실행시킨다 1) Thread의 자식 객체 생성 Thread를 상속받는 자식 객체를 생성한다. run() 메소드를 재정의하여 스레드가 실행할 코드를 작성하고 객체를 생성한다. Thread의 익명 자식 객체를 사용할 수도 있다. public class ..
예외와 예외 클래스 Java에서 예외 처리는 프로그램 실행 중에 발생할 수 있는 예외나 오류 상황을 적절히 처리하는 메커니즘이다. 모든 예외처리는 Throwable 클래스를 상속받는다. Throwable을 상속 받는 클래스로는 Exception과 Error가 있다. - Error : 프로그램 코드로는 복구할 수 없는, 개발자가 대처할 수 없는 오류를 말한다. - Exception : 프로그램 실행 중 발행할 수 있는 잘못된 사용 또는 코딩으로 인한 오류를 말한다. 예외가 발생하면 프로그램이 곧바로 종료되지만, 예외 처리를 하면 계속 실행 상태를 유지할 수 있다. 예외 클래스는 java.lang.Exception을 상속받아 만들어진다. Exception을 상속받는 예외에는 다음 두 가지가 있다. - 일반 ..
수정할 수 없는 unmodifiable 컬렉션이란 요소를 추가, 삭제할 수 없는 컬렉션을 말한다. umodifiable 컬렉션을 만드는 방법은 세 가지가 있다. 1. List.of() 이용 List immutableList = List.of(E ... elements); Set immutableSet = Set.of(E ... elements); Map immutableMap = Map.of( K K1, V v1, K k2, V v2, ...) // 반드시 짝수여야 함 2. copyOf 으로 기존 컬렉션 복사 List immutableList = List.coptOf(Collection coll); Set immutableSet = Set.(Collection coll); Map immutableMap ..
스트림이란? 컬렉션 및 배열의 요소를 반복 처리하기 위해 사용할 수 있는 API이다. 스트림은 요소들이 하나씩 흘러가면서 처리된다는 의미를 가지고 있다. Stream은 구현체가 없는 인터페이스로, 직접 객체를 생성할 수는 없고. 컬렉션의 stream() 함수를 통해서 Stream 객체를 생성해 Stream 타입에 대입해 줄 수 있다. 중간 연산과 최종 연산 스트림은 중간 연산(intermediate operation) 과 최종 연산(terminal operation)으로 구성되어 있다. 여러 개의 스트림이 연결되어 있는 것을 스트림 파이프라인이라고 한다. List list = List.of(8, 2, 5, 1, 10, 9, 2, 1, 0); list.stream() .sorted(Comparator.re..
LIFO와 FIFO 컬렉션 후입선출(LIFO)은 나중에 넣은 객체가 먼저 빠져나가고, 선입선출(FIFO)은 먼저 넣은 객체가 먼저 빠져나가는 구조를 말한다. 컬렉션 프레임워크는 LIFO 자료구조를 제공하는 스택(Stack) 클래스와 FIFO 자료구조를 제공하는 큐(Queue) 인터페이스를 제공하고 있다. Stack Stack 클래스는 LIFO 자료구조를 구현한 클래스이다. 다음은 Stack 객체를 생성하는 방법이다 Stack stack = new Stack(); Stack 클래스의 주요 메소드이다 리턴 타입 메소드 설명 E push(E item) 주어진 객체를 스택에 넣는다 E pop() 스택의 맨 위 객체를 빼낸다 public class Coin { private int value; public Coi..
Map 컬렉션은 키(key)와 값(value)로 구성된 엔트리(Entry) 객체를 생성한다. 여기서 키와 값은 모두 객체이다. Map에서 키는 중복 저장할 수 없다. 다만 값은 중복 저장할 수 있다. 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치된다. Map 인터페이스를 구현한 클래스로는 HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 있다. Map 컬렉션에서 공통적으로 사용 가능한 메소드는 다음과 같다. 키로 객체들을 관리하기 때문에 키를 매개값으로 갖는 메소드가 많다. 기능 메소드 설명 객체 추가 V put(K key, V value) 주어진 키와 값을 추가, 저장이 되면 값을 리턴 객체 검색 boolea..