Day 45

ChangWoo·2023년 5월 20일
0

자바의 정석

목록 보기
61/71
post-thumbnail

ch 9-28~31 문자열과 숫자 변환, 오토박싱 & 언박싱

문자열과 숫자 변환

  • 문자열을 숫자로 변환하는 다양한 방법
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

오토박싱 & 언박싱 - 예제

  • 원래는 기본형을 참조형으로 형변환 할 수 없다. (=형변환 연산자 사용불가)
  • 그런데, 컴파일러가 자동으로 허용해준다.
  • 참조형과 기본형의 연산이 가능해진다.
  • 참조형의 연산이 가능해진다.
  • 참조형을 기본형으로 형변환 할 수 있게 된다.

ch 10-1~3 날짜와 시간, Calendar클래스

날짜와 시간

  • java.util.Date
    • 날짜와 시간을 다룰 목적으로 만들어진 클래스(JDK1.0)
    • Date의 메서드는 거의 deprecated되었지만, 여전히 쓰이고 있다. (사용을 권장하지 않으나, 사용수가 있다.)
  • java.util.Calendar
    • Date클래스를 개선한 새로운 클래스(JDK1.1). 여전히 단점이 존재
  • java.time 패키지
    • Date와 Calendar의 단점을 개선한 새로운 클래스들을 제공(JDK1.8)
    • 날짜와 시간을 따로 다룰 수 있게 클래스를 LocalDate / LocalTime로 구분하고 둘을 같이 다룰 수 있는 LocalDateTime으로 구분하였다.

Calendar 클래스

  • 추상 클래스이므로 getInstance()를 통해 구현된 객체를 얻어야 한다.
Calendar cal = new Calendar(); // 에러! 추상클래스는 인스턴스를 생성할 수 없다.
// OK, getInstance()메서드는 Calendar클래스를 구현한 클래스의 인스턴스를 반환한다.
Calendar cal = Calnedar.getInstance();
class MyApplication {
	public static void main(String args[]) {
    	calendar cal = new GregorianCalendar();	// 경우에 따라 이 부분을 변경해야 한다.
        ...
    }
}

Calendar클래스 - 예제1

  • 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부터 일요일)
    < 시간 관련 필드 >
profile
한 걸음 한 걸음 나아가는 개발자

0개의 댓글