JAVA/자바의 정석 63

[자바의 정석 - 기초편] 10. (1) 날짜와 시간 / Calendar클래스 ( get )

날짜와 시간 java.util.Date - 날짜와 시간을 다룰 목적으로 만들어진 클래스 (JDK1.0) - Date의 메서드는 거의 deprecated되었지만 여전히 쓰이고 있음 java.util.Calendar - Date클래스를 개선한 클래스 (JDK1.1) - 여전히 단점이 존재 java.time패키지 - Date와 Calendar의 단점을 개선한 새로운 클래스들 제공 (JDK1.8) Calendar 클래스 - 추상 클래스이므로 getInstance()를 통해 구현된 객체를 얻어야 함 Calendar cal = Calendar(); // 에러. 추상클래스는 인스턴스 생성 X // OK. getInstance()메서드는Calendar클래스를 구현한 클래스의 인스턴스를 반환 Calendar cal = ..

[자바의 정석 - 기초편] 9. (4) StringBuilder / Math클래스 / wrapper클래스 / Number클래스 / 오토박싱 & 언박싱

StringBuilder - StringBuffer : 동기화 O ➔ 멀티 쓰레드에 안전 / StringBuilder : 동기화 X - 멀티 쓰레드 프로그램이 아닌 경우, 동기화는 불필요한 성능 저하됨 ➔ 이럴 때는 StringBuilder 사용해야 성능 향상 Math클래스 수학관련 static메서드의 집합 Ex) round() : 소수점 아래 첫번째 자리에서 반올림 Math클래스의 메서드 래퍼(wrapper) 클래스 8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스 (기본형을 감싸는 클래스) public final class Integer extends Number implements Comparable { ... private int value; // 기본형 int를 감싸고 있음 ... } < 예제..

[자바의 정석 - 기초편] 9. (3) join() / StringJoiner / StringBuffer클래스 / StringBuffer 생성자와 메서드

join() join()은 여러 문자열 사이에 구분자를 넣어서 결합함 String animals = "dog, cat, bear"; String[ ] arr = animals.split(","); // 문자열을 ','를 구분자로 나눠서 배열에 저장 String str = String.join("-", arr); // 배열의 문자열을 '-'로 구분해서 결합 System.out.println(str); // dog-cat-bear 문자열과 기본형 간의 변환 - 숫자를 문자열로 바꾸는 방법 int i =100; String str1 = i + ""; // 100을 "100"으로 변환하는 방법 1 (편리) String str2 = String.valueOf(i); // 100을 "100"으로 변환하는 방법 2 ..

[자바의 정석 - 기초편] 9. (2) String 클래스 ( 문자열 비교 / 문자열 리터럴 / 빈 문자열 / 생성자와 메서드 )

String 클래스 데이터(char[]) + 메서드(문자열 관련) - 내용을 변경할 수 없는 불변(immutable) 클래스 - 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐 ➔ 문자열의 결합이나 변경이 잦다면, 내용을 변경가능한 StringBuffer를 사용 문자열의 비교 equals()이용해서 내용 비교 문자열 리터럴 - 문자열 리터럴은 프로그램 실행시 자동으로 생성됨 (constant pool에 저장) - 같은 내용의 문자열 리터럴은 하나만 만들어짐 (String은 불변이라서) 빈 문자열 ("", empty string) 내용이 없는 문자열. 크기가 0인 char형 배열을 저장하는 ..

[자바의 정석 - 기초편] 9. (1) Object 클래스 ( equals(Object obj) / hashCode() / toString() )

Object 클래스 모든 클래스의 최고 조상. 오직 11개 메서드만 가지고 있음 equals(Object obj) 객체 자신(this)과 주어진 객체(obj)를 비교 ➔ 같으면 true / 다르면 false - Object 클래스의 equals()는 객체의 주소를 비교 (참조변수 값 비교) public boolean equals(Object obj) { return (this == obj); } equals(Object obj)의 오버라이딩 인스턴스 변수(iv)의 값을 비교하도록 equals()를 오버라이딩 해야 함 중간에 이렇게변경해도 가능 hashCode() 객체의 해시코드(hash code)를 반환하는 메서드 - Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환 publ..

[자바의 정석 - 기초편] 8. (2) 예외 발생시키기 / checked예외 / unchecked예외 / 사용자 정의 예외 / 예외 되던지기 / 연결된 예외

예외 발생시키기 1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체 생성 2. 키워드 throw를 이용해서 예외 발생 Exception e = new Exception("고의로 발생시켰음"); throw e; // 예외를 발생시킴 throw new Exception("고의로 발생시켰음"); // 위의 두줄을 한줄로 checked예외 컴파일러가 예외 처리 여부를 체크 - 예외 처리 (try-catch) 필수 - Exception과 자손 unchecked예외 컴파일러가 예외 처리 여부를 체크 안함 - 예외 처리 (try-catch) 선택 - RunTimeException과 자손 메서드에 예외 선언하기 예외를 처리하는 방법 1. try - catch문 2. 예외 선언하기 (예외 떠넘기기, 알리기) ..

[자바의 정석 - 기초편] 8. (1) 프로그램 오류 / 예외 처리 / Exception과 자손 / RunTimeException과 자손 / 멀티 catch블럭

프로그램 오류 - 컴파일 에러 (compile-time error) : 컴파일 할 때 발생하는 에러 - 런타임 에러 (runtime error) : 실행할 때 발생하는 에러 - 논리적 에러 (logical error) : 작성 의도와 다르게 동작 java의 런타임 에러 1. 에러 (error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 2. 예외 (exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 예외처리 (exception handing) 정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것 목적 : 프로그램의 비정상 종료를 막고 정상적인 실행상태를 유지하는 것 Exception 클래스와 자손 클래스 사용자의 실수와 같은 외적인 ..

[자바의 정석 - 기초편] 7. (12) 디폴트 메서드 / 내부 클래스 / 내부 클래스 제어자 / 익명 클래스

디폴트 메서드 내부 클래스 클래스 안의 클래스 내부 클래스의 장점 - 내부 클래스에서 외부 클래스의 멤버들에 쉽게 접근 가능 - 코드의 복잡성 감소 (캡슐화) 내부 클래스의 종류와 특징 - 내부 클래스의 종류와 유효범위는 변수와 동일 내부 클래스 특징 인스턴스 클래스 외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 인스턴스 멤버처럼 다루어짐. 주로 외부클래스의 인스턴스 멤버들과 관련된 작업에 사용될 목적으로 선언 스태틱 클래스 외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 static 멤버처럼 다루어짐. 주로 외부 클래스의 static 멤버, 특히 static 메서드에서 사용될 목적으로 선언 지역 클래스 외부 클래스의 메서드나 초기화 블럭 안에 선언하며, 선언된 영역 내부에서만 사..

[자바의 정석 - 기초편] 7. (11) 인터페이스 장점

인터페이스의 장점 두 대상(객체) 간의 '연결, 대화, 소통'을 돕는 '중간 역할' - 선언(설계)와 구현을 분리시킬 수 있게 함 - 개발 시간을 단축할 수 있음 - 변경에 유리한 유연한 설계 가능 왼쪽 : 껍데기 + 알맹이 ➔ 유연 X, 변경에 불리 오른쪽 : 껍데기 / 알맹이 분리 (알맹이 다른 걸로 바꿀 수 있음) ➔ 유연 O, 변경에 유리 왼쪽 : A도 같이 변경해야함 오른쪽 : A는 변경 없음 B나 C를 사용할 때 A를 안바꿔도 됨 (I 그대로 사용) - 표준화 가능 - 서로 관계없는 클래스들을 관계 맺어줄 수 있음 문제 : 세가지만 갖는 공통점이 없음 해결 : 인터페이스를 통해 공통점 만들어주기 새로운 Repairable 인터페이스를 ..

[자바의 정석 - 기초편] 7. (10) 인터페이스 ( 선언 / 상속 / 구현 / 다형성 )

추상 클래스 : 추상 메서드를 가진 일반 클래스 (생성자, iv ... 갖고 있음) / 상속(extends)을 통해 구현 인터페이스 : 추상 메서드 외에 아무것도 갖지 않음 (iv, im, 생성자 X) / implements 를 사용해 구현 인터페이스 - 추상 메서드의 집합 - 구현된 것이 전혀 없는 설계도 (모든 멤버가 public) interface 인터페이스이름 { pubilc ststic final 타입 상수이름 = 값; public abstract 메서드이름 (매개변수목록); } 인터페이스의 상수 : 항상 public static final ➔ 생략 가능 인터페이스의 추상메서드 : 항상 public static ➔ 생략 가능 인터페이스의 상속 - 인터페이스의 ..