- 문자열을 숫자로 변환하는 다양한 방법
int i = new Integer("100").intValue(); // floatValue(), longValue(),... int i2 = Integer.parseInt("100"); // 주로 이 방법을 많이 사용. int i3 = Integer.valueOf("100");
- n진법의 문자열을 숫자로 변환하는 방법
- 각각 2진수 / 8진수 / 16진수로 변환해라.
- JDK1.5이전에는 기본형과 참조형간의 연산이 불가능
int i = 5; Integer iObj = new Integer(7); int sum = i + iObj; //에러. 기본형과 참조형 간의 덧셈 불가 (JDK1.5 이전)
- 기본형 int를 래퍼 클래스 Integer로 바꿔주는 것 = 오토박싱(= 자동으로 변환)
- 래퍼 클래스 Integer를 기본형 int로 바꿔주는 것 = 언박싱(= 자동으로 변환X)
- 기본형의 값을 객체로 자동변환하는 것을 오토박싱, 그 반대는 (오토)언박싱
ArrayList<Integer> list = new ArrayList<Integer>(); list.add(10); // 오토박싱. 10 -> new Integer(10) int value = list.get(0); // 언박싱. new Integer(10) -> 10
- 원래는 기본형을 참조형으로 형변환 할 수 없다. (=형변환 연산자 사용불가)
- 그런데, 컴파일러가 자동으로 허용해준다.
- 참조형과 기본형의 연산이 가능해진다.
- 참조형의 연산이 가능해진다.
- 참조형을 기본형으로 형변환 할 수 있게 된다.
- java.util.Date
- 날짜와 시간을 다룰 목적으로 만들어진 클래스(JDK1.0)
- Date의 메서드는 거의 deprecated되었지만, 여전히 쓰이고 있다. (사용을 권장하지 않으나, 사용수가 있다.)
- java.util.Calendar
- Date클래스를 개선한 새로운 클래스(JDK1.1). 여전히 단점이 존재
- java.time 패키지
- Date와 Calendar의 단점을 개선한 새로운 클래스들을 제공(JDK1.8)
- 날짜와 시간을 따로 다룰 수 있게 클래스를 LocalDate / LocalTime로 구분하고 둘을 같이 다룰 수 있는 LocalDateTime으로 구분하였다.
- 추상 클래스이므로 getInstance()를 통해 구현된 객체를 얻어야 한다.
Calendar cal = new Calendar(); // 에러! 추상클래스는 인스턴스를 생성할 수 없다. // OK, getInstance()메서드는 Calendar클래스를 구현한 클래스의 인스턴스를 반환한다. Calendar cal = Calnedar.getInstance();
class MyApplication { public static void main(String args[]) { calendar cal = new GregorianCalendar(); // 경우에 따라 이 부분을 변경해야 한다. ... } }
- get()으로 날짜와 시간 필드 가져오기 - int get(int field)
Calendar cal = Calendar.getInstance90; // 현재 날짜와 시간으로 셋팅됨 int thisYear = cal.get(Calendar.YEAR); // 올해가 몇년인지 알아낸다. int lastDayOfMonth = cal.getActualMaximum(Calendar.Date); // 이 달의 마지막날
- Calendar에 정의된 필드
< 날짜 관련 필드 >
- WEEK_OF_YEAR : 1월1일 ~ 지금까지 몇번 째 주인지 ( = 그 해의 몇 번째 주)
- DAY_OF_WEEK : 요일 (1~7 / 1부터 일요일)
< 시간 관련 필드 >