공부기록/자바의 정석 9

[Java의 정석] 11. 컬렉션 프레임웍

1. 컬렉션 프레임웍 '데이터 군을 저장하는 클래스들을 표준화한 설계' 컬렉션, 다수의 데이터를 다루는데 필요한 다양하고 풍부한 클래스들을 제공한다. 1.1 컬렉션 프레임웍의 핵심 인터페이스 List : 순서가 있는 데이터의 집합, 데이터의 중복을 허용한다. Set : 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않는다. Map : key와 value의 쌍으로 이루어진 데이터의 집합. 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을허용한다. 컬렉션 프레임웍의 모든 컬렉션 클래스들을 List, Set, Map 중의 하나를 구현하고 있으며, 구현한 인터페이스의 이름이 클래스의 이름에 포함되어 있어서 이름만으로도 클래스의 특징을 쉽게 알 수 있도록 되어있다. Vector나 ..

[Java의 정석] 10. 날짜와 시간 & 형식화

1. 날짜와 시간 1.1 Calendar와 Date Calendar는 추상클래스이기 때문에 직접 객체 생성할 수 없고, 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 한다. Calendar cal = Calendar.getInstance(); //Calendar를 Date로 변환 Calendar cal = Calendar.getInstance(); Date d = new Date(cal.getTimeInMillis()); //Date를 Calendar로 변환 Date d = new Date(); Calendar cal = Calendar.getInstace(); cal.setTime(d) 주의할 점: get(Calendar.MONTH)로 얻어오는 값의 범위가 1~12가 아닌 0~11이다, 2...

[Java의 정석] 9. java.lang패키지와 유용한 클래스

java.lang패키지는 자바 프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있다. 그렇기 때문에 java.lang패키지의 클래스들은 import문 없이도 사용할 수 있게 되어 있다. 1.1 Object클래스 Object클래스는 모든 클래스의 최고 조상이기 때문에 Object클래스의 멤버들을 모든 클래스에서 바로 사용 가능하다. protected Object clone() 해당 객체의 복제본을 생성하여 반환함. boolean equals(Object obj) 해당 객체와 전달받은 객체가 같은지 여부를 반환함. protected void finalize() 해당 객체를 더는 아무도 참조하지 않아 가비지 컬렉터가 객체의 리소스를 정리하기 위해 호출함. Class getClass() 해당 객체의 클래스 타..

[Java의 정석] 8. 예외처리 exception handling

1. 예외처리 1.2 예외 클래스의 계층구조 모든 예외의 최고 조상은 Exception 클래스이다. Exception 클래스들 : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외 RuntionException 클래스들: 프로그래머의 실수로 발생하는 예외 1.3 예외처리하기 - try-catch문 에러는 어쩔 수 없지만, 예외는 프로그래머가 이에 대한 처리를 미리 해주어야 한다. try { //예외가 발생할 가능성이 있는 문장들을 넣는다. } catch (Exception e1) { // Exception1이 발생했을 경우, 이를 처리하기 위한 문장을 적는다. } catch (Exception e2) { // Exception이 발생했을 경우, 이를 처리하기 위한 문장을 적는다. } 하나의 try블..

[Java의 정석] 7. 객체지향 프로그래밍2

정리한 내용이 날라가는 이슈와 내용이 많아 부분적으로만 정리했습니다.  1.3 클래스간의 관계 결정하기상속관계: ~은 ~이다.포함관계: ~은 ~을 가지고 있다. 1.4 단일 상속자바에서는 오직 단일 상속만을 허용한다. 2.2 오버라이딩의 조건자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와-이름이 같아야 한다.-매개변수가 같아야 한다.-반환타입이 같아야 한다.조상 클래스의 메서드를 자손 클래스에서 오버라이딩할 때1. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.2. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.3. 인스턴스메서드를 static메서드로 또는 그 반대로 변경할 수 없다.(접근 제어자: public, protected, default, private..

[Java의 정석]6. 객체지향 프로그래밍1

1. 객체지향언어 1.1 객체지향언어의 역사 1.2 객체지향언어 -객체지향언어의 주요특징 1. 코드의 재사용성이 높다. 2. 코드의 관리가 용이하다. 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. 일단 프로그램을 기능적으로 완성한 다음 어떻게 하면 보다 객체지향적으로 코드를 개선할 수 있을지를 고민하여 점차 개선해 나가는 것이 좋다. 2. 클래스와 객체 2.1 클래스와 객체의 정의와 용도 클래스란 객체를 정의해놓은 것 또는 객체의 설계도 또는 틀 이라고 정의할 수 있다. 객체란 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻한다. 프로그래밍에서는 먼저 클래스를 작성한 다음, 클래스로부터 객체를 생성하여 사용한다. 2.2 객체와 인스턴스 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며, ..

[Java의 정석] 5. 배열

1. 배열(array) 1.1 배열이란? 배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것. int [] score = new int[5];// 5개의 int 값을 저장할 수 있는 배열 생성 여기서 변수 score는 배열을 다루는데 필요한 참조변수일 뿐 값을 저장하기 위한 공간은 아니다. 1.2 배열의 선언과 생성 대괄호는 타입 뒤나 변수이름 뒤에 붙이면 된다. int[] = score; //배열 선언(int 타입의 배열을 다루기 위한 참조변수 score 선언) score = new int[5] // int타입의 값 5개를 저장할 수 있는 배열 int[] score = new int[5]; //배열의 선언과 생성을 동시에 함. 대부분 경우 이렇게 한다. 배열을 선언하는 것은 생성된 배열을 다루기..

[Java의 정석] 4. 조건문과 반복문

1. 조건문 - if, switch 1.1 if문 조건식의 결과는 반드시 true 또는 false이어야 한다. if (조건식) { //조건식이 true일 때 수행될 문장들을 적는다. } 블럭{} : 블럭 내의 문장이 하나뿐 일 떄는 괄호 생략 가능. 1.2 if-else문 조건식의 결과가 참이 아닐 떄, 즉 거짓일 때 else블럭의 문장을 수행. 1.3 if-else if문 처리해야할 경우의 수가 셋 이상인 경우에 사용. 1.4 중첩 if문 if문의 블럭 내에 또 다른 if문을 포함시키는 것. 중첩의 횟수에는 거의 제한이 없다. 내부의 if문은 안쪽으로 들여쓰기를 해서 구분될 수 있도록 작성해야 한다. 1.5 switch문 처리할 경우의 수가 많은 경우에 작성하는 것이 좋다. switch문도 중첩이 가능..

[Java의 정석] 3. 연산자

1.연산자 연산을 수행하는 기호 1.1 연산자와 피연산자 연산자: 연산을 수행하는 기호(+,-,*,/ 등) 피연산자: 연산자의 작업 대상(변수, 상수, 리터럴, 수식) 연산자는 피연산자로 연산을 수행하고 나면 항상 결과값을 반환한다. 1.2 식과 대입연산자 식:연산자와 피연산자를 조합하여 계산하고자하는 바를 표현한 것 식을 계산하여 결과를 얻는 것을 식을 평가한다고 한다. 1.3 연산자의 종류, 1.4 연산자의 우선순위와 결합규칙 1. 산술 > 비교 > 논리 > 대입. 대입은 제일 마지막에 수행 2. 단항 > 이항 > 삼항. 단항 연산자의 우선순위가 이항 연산자보다 높다. 3. 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽이다. 1.5 산술 변환 1. 두 피연산자의 타입을 같..