패스트캠퍼스 백엔드 부트캠프 3기/JAVA 10

[JAVA] 입출력(I/O)

Decorator 패턴을 사용해 내용물에 새로운 기능을  계속 추가해 나갈 수 있다.  1. 입출력(I/O)1. 입출력과 스트림 2. 바이트기반 스트림 InputStream, OutputStream 3. 보조스트림 --(Decorator 패턴) 4. 문자기반 스트림 Reader, Writer2. 바이트기반 스트림1. InputStream, OutputStream 최고조상 2. ByteArrayInputStream, ByteArrayOutputStream 메모리 3. FileInputStream, FileOutputStream 파일3. 바이트기반 보조스트림1. FilterInputStream, FilterOutputStream 최고조상 2. BufferedInputStream, BufferedOutputS..

[JAVA] 스레드

program → process → thread프로그램은 파일로서 보조 메모리(SSD, HDD 등)에 저장되어 있고 프로세스는 컴퓨터의 자원을 할당 받아 실행하고 있는 프로그램이 된다. 스레드는 조금 더 자세히 들어가 이 프로세스 안에 구성되어서 실제로 작업을 수행하고 있는 일꾼이다. 요즘 시대는 멀티 프로세싱, 멀티 스레딩이라고 해서 여러 가지 작업을 동시에 수행하는 수준까지 되었다.  병행/동시성(concurrent): 여러 작업을 시분할로 함께 처리하여 겉으로 봐서는 동시에 수행되는 것처럼 보인다  병렬(parallel): 큰 작업을 여러 개의 작은 작업으로 쪼개어 동시에 처리여러 스레드가 동시에 많은 작업을 처리하기 때문에 공유하고 있는 데이터에 대해 동기화 처리가 필수로 요구된다. synchro..

[JAVA] 컬렉션 프레임워크

컬렉션(collection): 여러 객체 모아놓은 것 → R, W, 검색, 정렬프레임워크(framework): 정해진 틀에 맞춰 프로그래밍 하는 것표준화, 정형화된 체계적인 프로그래밍 방식비슷하니까 이해도 잘 되고 작업 생산성 높음유지 보수하기도 좋음cf. library - 다른 사람들이 만들어 놓은 기능 모아놓은 것 자료 구조라는 것은 데이터들의 구조를 나타낸 것으로 어떻게 하면 데이터를 효율적으로 읽고 저장할 수 있을까를 고민한 것이다. 결국 배열이라는 일체형과 연결형의 모습으로 정리할 수 있다. 트리는 연결형에서 파생된 모습이고 맵은 배열과 연결형을 조합하여 만든 구조이다. 그렇기에 자료구조는 배열이라는 일체형과 연결형이라는 두 가지로 크게 나눌 수 있다. 배열연결형데이터 접근 시간이 짧다링크를 따..

[JAVA] 날짜와 시간 객체, 형식화 클래스

DateCalendarjava.time 패키지Calendar 추상 클래스Calendar cal = new GregorianCalendar(); // 구체적으로 명시Calendar cal = Calendar.getInstance(); // 팩토리 메서드를 사용해 추상화 new를 사용해 구체적인 클래스를 명시하는 것보다 현재 시간을 기준으로 인스턴스를 반환하게 하는 것이 유지보수 관점에서 훨씬 좋은 코드이다.날짜와 시간을 같이 다룬다. month는 0부터 시작한다.요일 또한 int로 반환하기 때문에 따로 문자열 처리를 해 주어야 한다.set() 하기 전에 clear()로 필드 초기화를 해 주는 것이 좋다. 초기화 하지 않으면 ms 차이로 의도한 대로 결과가 나오지 않을 수 있다. add(): 특정 필드..

[JAVA] java.lang 패키지

Object 클래스String 클래스StringBuffer/StringBuilder 클래스Math 클래스wrapper 클래스Object 클래스는 모든 클래스의 최고 조상 클래스다다른 말로 우리가 사용하는 모든 클래스가 Object 클래스를 상속받기 때문에 아래의 메서드를 포함하고 있다. 메서드의 내용을 변형하고 싶다면 자손 클래스에서 오버라이딩하여 사용하면 된다. (아래는 자바의 정석 기초편 참고) Object 클래스의 메서드 메서드 설명protected Object clone()객체 자신의 복사본을 반환한다.public boolean equals(Object obj)객체 자신과 obj가 같은 객체인지 알려준다. (주소 비교)protected void finalize()객체가 소멸될 때 가비지 컬렉터에 ..

[JAVA] 예외 처리

프로그램의 실행 오류를 발생 시점에 따라 다음과 같이 나눌 수 있다.컴파일 에러 - 실행 전런타임 에러 - 실행 중논리적 에러 - 컴파일도 잘 되고 실행도 잘 되지만 의도한 것과 다르게 동작하는 것 위와 같이 실행 중 발생하는 오류(런타임 에러)는 다시 에러(error)와 예외(exception)로 구분할 수 있다. 에러 - 심각한 오류로 복구 불가능예외 - 덜 심각한 오류로 복구 가능그래서 예외를 처리한다고 할 때 수습하기 어려운 에러를 다루는 것이 아니라 그나마 덜 심각한 오류인 예외를 대비함으로써 프로그램이 종료되지 않도록 한다. try-catch 문에서 catch(Exception e) {} 로 조건식을 정의하면 실행 중 발생하는 모든 예외를 받을 수 있다. 예외(exception)는 또 다시 두..

[JAVA] 객체지향 프로그래밍의 이해 - 2

클래스의 관계는 크게 상속과 포함 관계가 있다. 상속은 기존의 클래스로 새로운 클래스를 작성하는 것으로 코드를 재사용한다.쉽게 생각해 두 클래스에 부모 - 자식 관계를 맺어주는 것이라고 볼 수 있다.자바는 충돌 위험 때문에 단일 상속만 허용한다 (c++은 다중 상속 허용)Object 클래스는 모든 클래스의 조상이다. 부모가 없는 클래스는 자동으로 Object 클래스를 상속받는다.(Object 클래스는 11개의 메서드를 가진다.)예를 들어 Point 클래스와 Point3D 클래스를 만들 때 Point3D 클래스를 어떻게 정의하느냐에 따른 상속 관계를 살펴보자. class Point { int x; int y;}class Point3D { // 1. Point 클래스와 독립적인 관계 int x; int y;..

[JAVA] static 키워드

static 키워드는 블록, 변수, 메서드, 클래스에 붙일 수 있다.  The static keyword in Java is used to share the same variable or method of a given class. ... . The static keyword belongs to the class rather than an instance of the class. The static keyword is used for a constant variable or a method that is the same for every instance of a class. ...  helps create class-level variables and methods. [출처: https://www.gee..

[JAVA] 객체지향 프로그래밍의 이해 - 1

객체지향 언어는 코드의 재사용성을 높이고, 유지보수를 용이하게 하고, 중복 코드를 제거하기 위한 목적으로 사용된다.객체지향 언어는 다음과 같은 4대 핵심 개념을 가진다.캡슐화상속추상화다형성클래스는 객체를 정의해 놓은 것이며, 객체를 생성하기 위해서 만든다.따라서 클래스를 (제품) 설계도라고 이해한다면 객체는 그 설계도에 따라 만든 제품이 된다. 이때 만든다고 하는 것은 프로그래밍 관점에서 "인스턴스화"한다고 표현한다. 설계도에 따라 개별 객체를 만드는 과정이다. 클래스 객체제품 설계도제품 객체는 속성(변수)과 기능(메서드)으로 구성된 것으로 볼 수 있다. 그래서 객체를 사용한다고 하는 것은, 객체가 가진 속성과 기능을 사용하는 것으로 이해할 수 있다.  클래스를 작성할 때 주의할 점은 다음과 같다.하나의..