본문 바로가기

Java

(19)
[Java] java.time패키지 - 코딩밥상 java.time패키지 java.time 날짜와 시간을 다루는데 필요한 핵심 클래스들을 제공 java.time.chrono 표준(ISO)이 아닌 달력 시스템을 위한 클래스들을 제공 java.time.format 날짜와 시간을 파싱하고, 형식화하기 위한 클래스들을 제공 java.time.temporal 날짜와 시간의 필드(field)와 단위(unit)을 위한 클래스들을 제공 java.time.zone 시간대(time-zone)와 관련된 클래스들을 제공 해당 패키지의 가장 큰 특징은 String클래스처럼 '불변(immutable)'이라는 것이다. 그래서 날짜나 시간을 변경하는 메서드들은 기존의 객체를 변경하는 대신 항상 변경된 새로운 객체를 반환한다. (기존 Calendar클래스는 변경 가능하므로, 멀티 쓰..
[Java] 형식화 클래스(Format클래스) - 코딩밥상 형식화 클래스  데이터를 일정한 형식으로 정리하고 싶을때 또는 원하는 형식으로 출력하고 싶을 때, 자바에서 이를 쉽게 해결할 수 있는 방법을 제공하는데 그 것이 바로 형식화 클래스이다. 이 클래스는 java.text패키지에 포함되어 있으며 숫자, 날짜, 텍스트 데이터를 일정한 형식에 맞게 표현할 수 있는 방법을 객체지향적으로 설계하여 표준화하였다. 형식화 클래스는 형식화에 사용될 패턴을 정의하는데, 데이터를 정의된 패턴에 맞춰 형식화할 수 있을 뿐만 아니라 역으로 형식화된 데이터에서 원래의 데이터를 얻어낼 수도 있다. 형식화 클래스에서는 원하는 형식으로 표현 또는 변환하기 위해서 패턴을 정의하는데, 형식화 클래스에서는 패턴을 정의하는 것이 전부라고 해도 과언이 아니다. DecimalFormat 형식화 ..
[Java] Calendar와 Date 클래스 - 코딩밥상 Calendar와 Date Date는 날짜와 시간을 다룰 목적으로 JDK1.0부터 제공되어온 클래스이다. 하지만 그 기능은 턱없이 부족했기 때문에 Calendar라는 새로운 클래스를 그 다음 버젼인 JDK1.1부터 제공하기 시작했다. Calendar는 Date보다 훨씬 보안되었지만 몇 가지 단점들이 여전히 존재했다. 그 후 JDK1.8부터 'java.time패키지'로 기존의 단점들을 개선한 새로운 클래스들이 추가되었다. 그럼에도 불구하고 Calendar와 Date는 자바의 탄생부터 지금까지도 사용되고 있으므로 간략하게 개념과 사용 방법들을 익히면 많은 도움이 될것이다. Date와 Calendar간의 변환 Calendar가 새로 추가되면서 Date는 대부분의 메서드가 'deprecated(더 이상 사용을 ..
[Java] java.lang패키지(wrapper 클래스) - 코딩밥상 wrapper 클래스 때로는 기본형(primitive type) 변수도 어쩔 수 없이 객체로 다뤄야 하는 경우가 있다. 이 때 사용되는 것이 래퍼(wrapper)클래스이다. 8개의 기본형을 대표하는 래퍼클래스가 있는데, 이 클래스들을 이용하면 기본형 값을 객체로 다룰 수 있다. 래퍼 클래스의 생성자는 매개변수로 문자열이나 각 자료형의 값들을 인자로 받는다. 이 때 주의할 것은 생성자의 매개변수로 문자열을 제공할 때, 각 자료형에 알맞은 문자열을 사용해야한다는 것이다. 예를 들어 'new Integer("1.0");' 과 같이 하면 NumberFormatException이 발생한다. public final class Integer extends Number implements Comparable{ //....
[Java] java.lang패키지(String클래스, StringBuffer클래스) - 코딩밥상 String클래스 다른 언어에서는 문자열을 char형의 배열로 다루었으나 자바에서는 문자열을 위한 클래스를 제공한다. 그것이 바로 String클래스인데, String클래스는 문자열을 저장하고 이를 다루는데 필요한 메서드를 함께 제공한다. -변경 불가능한(immutable클래스) String클래스에서는 문자열을 저장하기 위해서 문자열 참조변수(char[]) value를 인스턴스 변수로 정의해놓고 있다. 인스턴스 생성 시 생성자의 매개변수로 입력받는 문자열은 이 인스턴스변수(value)에 문자형 배열(char[])로 저장되는 것이다. public final class String implements java.io.Serializable, Comparable[ private char[] value; //.....
[Java] java.lang패키지(Object 클래스) - 코딩밥상 java.lang패키지 java.lang패키지는 자바프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있다. 그렇기 때문에 패키지에 포함되는 클래스들은 import문 없이도 사용할 수 있게 되어 있다. 그 동안 String, System클래스 등을 import문 없이도 사용할 수 있었던 이유가 이들이 java.lang패키지에 속한 클래스들이기 때문이었다. 우선 패키지에 포함되어있는 여러 클래스들 중 자주 사용되는 몇 가지만을 골라서 정리해보자. Object클래스 Object클래스는 모든 클래스의 최고 조상이기 때문에 Object클래스의 멤버들은 모든 클래스에서 바로 사용 가능하다. 앞서 정리한바와 같이 Object클래스는 멤버변수는 없고 오직 11개의 메서드만 갖는다. 이 메서드들은 모든 인스턴스가 가져..
[Java] 예외처리(exception handling) - 코딩밥상 프로그램 오류 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 '에러(error)'와 '예외(exception)', 두 가지로 구분하였다. 에러는 메모리 부족이나 스택오버플로우와 같이 발생하면 복구할 수 없는 심각한 오류고, 예외는 발생하더라도 수습될 수 있는 비교적 덜 심각한 것이다. 즉 에러가 발생하면, 프로그램의 비정상적인 종료를 막을 길이 없지만, 예외는 발생하더라도 프로그래머가 이에 대한 적절한 코드를 미리 작성해 놓음으로써 프로그램의 비정상적인 종료를 막을 수 있다. 에러(error) - 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception) - 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 예외 클래스의 계층구조 자바에서는 실행 시 발생할 ..
[Java] 인터페이스(interfce) - 코딩밥상 인터페이스란? 일종의 추상클래스로 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상 메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다. 인터페이스도 추상클래스처럼 완성되지 않은 불완전한 것이기 때문에 그 자체만으로 사용되기 보다는 다른 클래스를 작성하는데 도움 줄 목적으로 작성된다. 인터페이스의 작성 클래스를 작성하는 것과 같은데 다만 키워드로 class 대신 interface를 사용한다는 것만 다르다. 그리고 interface에도 접근제어자로 public 또는 default를 사용할 수 있다. interface 인터페이스이름{ public static final 타입상수이름 = 값;..