날짜와 시간 라이브러리 (2)
·
Java
날짜와 시간의 핵심 인터페이스날짜와 시간은 특정 시점의 시간(시각)과 간격(기간)으로 나눌 수 있다고 했다.- 특정 시점의 시간(시각) : 이 프로젝트 기한은 8월 13일 까지야, 다음 회의는 11시 30분이야, 내 생일은 11월 28일이야- 시간의 간격 (기간, 시간의 양) : 앞으로 4년은 더해야 해, 이 프로젝트는 3개월 남았어, 라면은 3분 동안 끓여야 해  - 특정 시점의 시간은 Temporal(TemporalAccessor 포함) 인터페이스를 구현한다.- 시간의 간격은 TemporalAmount 인터페이스를 구현한다. TemporalAccessor 인터페이스- 날짜와 시간을 읽기 위한 기본 인터페이스- 특정 시점의 날짜와 시간 정보를 읽을 수 있는 최소한의 기능이 있다. Temporal 인터페..
날짜와 시간 라이브러리(1)
·
Java
날짜와 시간 라이브러리가 필요한 이유1. 날짜와 시간 차이 계산 - 윤년, 각 달의 일 수 등을 모두 고려해야 하기 때문에 단순 계산으로 정확한 결과를 얻기 힘들다. 2. 윤년 계산 - 지구가 태양을 한바퀴 도는데 걸리는 시간은 365.2425일이다. 즉 4년에 하루는 2월 29일을 추가하는 윤년을 도입하는데,이걸 계산하기 상당히 번거롭다. 3. 일광 절약 시간 (DST) 변환 - 보통 3월~ 10월은 태양이 일찍 뜬다. 시간도 여기에 맞춰 1시간 앞당기거나 늦추는 DST 또는 썸머타임이라고 하는데, 국가와지역에 따라 적용여부, 시작 날짜, 종료 날짜가 다 다르기 때문에 이를 계산하기는 굉장히 복잡하다. 4. 타임존 계산 - 세계는 다양한 타임존으로 나뉘어 있다. UTC로부터의 시간차이로 정의된다. 이것..
열거형 - ENUM
·
Java
문자열과 타입 안정성Enum Type이 생겨난 이유에 대해 먼저 알아보자. package enumeration.ex0;public class DiscountService { public int discount(String grade, int price) { int discountPercent = 0; if (grade.equals("BASIC")) { discountPercent = 10; } else if (grade.equals("GOLD")) { discountPercent = 20; } else if (grade.equals("DIAMOND")) { discountPercent = 3..
래퍼 클래스, Class 클래스
·
Java
래퍼클래스 - 기본형의 한계자바는 객체 지향 언어이다. 그런데 자바에서 객체가 아닌 것이 있는데 바로 int, double 같은 기본형 타입이다.기본형은 객체가 아니기 때문에 객체 지향 프로그래밍의 장점을 살릴 수 없다.객체는 유용한 메서드를 제공할 수 있는데, 기본형은 객체가 아니므로 메서드를 제공할 수 없다.추가로 객체 참조가 필요한 컬렉션, 제네릭을 사용할 수 없다.그리고 null값을 가질 수 없다. 때로는 데이터가 없음이라는 상태를 나타내야 할 필요가 있는데, 기본형은항상 값을 가진 상태이기 때문에 null을 표현할 수 없다. package wrapper;public class MyIntegerMethodMain0 { public static void main(String[] args) { ..
String 클래스
·
Java
String은 클래스이다. 즉 참조형이다 문자열은 자주 사용되니 편의상 쌍따옴표로 문자열을 감싸면 자바에서 아래와 같이 자동으로 변경해준다. package lang.string;public class StringBasicMain { public static void main(String[] args) { String str1 = "hello"; //String str1 = new String("hello"); }}(실제로는 성능 최적화를 위해 문자열 풀을 사용한다) public final class String implements java.io.Serializable, Comparable, CharSequence, Constable, C..
불변 객체
·
Java
기본형과 참조형의 공유 자바의 데이터타입은 기본형(Primitive Type), 참조형 (Reference Type)으로 나눌 수 있다.기본형: 하나의 값을 여러 변수에서 절대 공유하지 않음int a = 10;int b = a;b = 20;// a = 10 , b = 20 참조형: 하나의 객체를 참조값을 통해 여러 변수에서 공유할 수 있음Address a = new Address("서울");Address b = a;b.setValue("부산");// a,b 둘 다 부산으로 변경 공유 참조와 사이드 이펙트사이드 이펙트(Side Effect)는 프로그래밍에서 어떤 계산이 주된 작업 외에 추가적인 부수 효과를 일으키는것을 말한다.이로인해 디버깅이 어려워지고 코드의 안정성이 저하될 수 있다.(엄한곳에서 버그가 ..