목록기초튼튼/JAVA (58)
IT 개발노트
객체를 캡슐화 하는 것은 권장 습관이므로 setter를 사용한다고 보면 된다. 근데 만약 deserialize 한 후에 해당 객체가 immutable 하기를 원한다면? setter가 없어야 한다. 이때 기본 생성자 + setter 조합을 대신해 객체를 생성할 수 있도록 해주는 것이 @JsonCreator 어노테이션이다. 이 어노테이션을 생성자나 팩토리 메소드 위에 붙이면 jackson이 해당 함수를 통해 객체를 생성하고 필드를 생성과 동시에 채운다. 이렇게 생성자나 팩토리 메소드를 통해 필드 주입까지 끝내버리면 setter 함수가 필요 없게 된다. jackson을 통해 deserialze한 immutable한 객체를 얻을 수 있는 것이다. 그래서 @JsonCreator를 쓰는 것 같다. 생성자를 포함한..
1. 컬렉션 프레임웍(collections framework) 1.1 컬렉션 프레임웍이란? - 컬렉션(collection) : 여러 객체(데이터)를 모아 놓은 것을 의미 - 프레임웍(framework) : 특정 틀에 맞춰서 작업하는 것. 라이브러리(기능) + 프로그래밍 방식 -> 표준화, 정형화된 체계적인 프로그래밍 방식 - 컬렉션 프레임웍(collections framework) ->컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식 -> 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공 -> java.util패키지에 포함. JDK1.2부터 제공 - 컬렉션 클래스(collection class) -> 다수의 데이터를 저장할 수 있는 클래스(예, Vector, ArrayList, Has..
1. StringBuffer클래스 1.1 StringBuffer클래스의 특징 - String처럼 문자형 배열(char[])을 내부적으로 가지고 있다. - String클래스와 달리 내용을 변경할 수 있다.(mutable) - 인스턴스를 생성할 때 버퍼(배열)의 크기를 충분히 지정해주는 것이 좋다. (버퍼가 작으면 성능 저하 - 작업 중에 더 큰 배열의 생성이 필요) public StringBuffer(int length) { value = new char[length]; shared = false; } public StringBuffer(String str) { this(str.length() + 16); append(str); } - String클래스와 달리 equals()를 오버라이딩하지 않았다. St..
1. String클래스 1.1 String클래스의 특징 - 문자열 배열(char[])과 그에 관련된 메서드들이 정의되어 있다. - String인스턴스의 내용은 바꿀 수 없다.(immutable) - String str = "abc";와 String str = new String("abc");의 비교 2.2 빈 문자열("", empty string) - 내용이 없는 문자열. 크기가 0인 char형 배열을 저장하는 문자열 - 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능 char[] cArr = new char[0]; // 크기가 0인 char배열 int[] iArr = { }; // 크기가 0인 int배열 - String str="";은 가능해도 char c='';는 불가능 - String은 참조형..
1. Object클래스 1.1 Object클래스의 메서드 - 모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다. - notify(), wait() 등은 쓰레드와 관련된 메서드이다. - equals(), hashCode(), toString()은 적절히 오버라이딩해야 한다. 1.2 equals(Object obj) - 객체 자신과 주어진 객체(obj)를 비교한다. 같으면 true, 다르면 false를 반환한다. - Object클래스에 정의된 equals()는 참조변수 값(객체의 주소)을 비교한다. - equals()를 오버라이딩해서 인스턴스변수의 값을 비교하도록 바꾼다. 1.3 hashCode() - 객체의 해시코드(int타입의 정수)를 반환하는 메서드(해시함수) - 다량의 데이터를 저장&검..
1. 예외처리(Exception handling) 1.1 프로그램 에러 - 에러의 종류는 컴파일 에러(compile-time error)와 런타임 에러(runtime error)가 있다. -> 컴파일 에러 : 컴파일할 때 발생하는 에러 -> 런타임 에러 : 실행할 때 발생하는 에러 -> 논리적 에러 : 의도와 다른 결과를 초래하는 에러 - Java의 런타임 에러 : 에러(error)와 예외(exception) -> 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 -> 예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 1.2 예외처리의 정의와 목적 - 에러(error)는 어쩔 수 없지만, 예외(exception)는 처리해야 한다. - 예외처리의 ..
1. 인터페이스(interface) 1.1 인터페이스란? - 일종의 추상클래스. 추상클래스(미완성 설계도)보다 추상화 정도가 높다. - 실제 구현된 것이 전혀 없는 기본 설계도.(알맹이 없는 껍데기) - 추상메서드와 상수만을 멤버로 가질 수 있다. - 인스턴스를 생성할 수 없고, 클래스 작성에 도움을 줄 목적으로 사용된다. - 미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는데 사용된다. 1.2 인터페이스의 작성 - 'class'대신 'interface'를 사용한다는 것 외에는 클래스 작성과 동일하다. interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수목록); } - 구성요소(멤버)는 추상메서드와 상수만 가능하다..
1. 추상클래스(abstract class) 1.1 추상클래스란? - 클래스가 설계도라면 추상클래스는 '미완성 설계도' - 추상메서드(미완성 메서드)를 포함하고 있는 클래스 * 추상메서드 : 선언부만 있고 구현부(몸통, body)가 없는 메서드 - 완성된 설계도가 아니므로 인스턴스를 생성할 수 없다. - 다른 클래스를 작성하는 데 도움을 줄 목적으로 작성된다. - 일반메서드가 추상메서드를 호출할 수 있다.(호출할 때 필요한 건 선언부) abstract class Player { int currentPos; // 현재 Play되고 있는 위치를 저장하기 위한 변수 Player() { // 추상클래스도 생성자가 있어야 한다. currentPos = 0; } abstract void play(int pos); ..