본문 바로가기
Skill Stacks/Java

15. Java Wrapper 클래스, Dates

by JayAlex07 2023. 5. 28.

15. Java Wrapper 클래스, Dates

 

 

Wrapper 클래스란?

Wrapper : Boolean, Byte, Character, Double, Float, Integer, Long, Short

Primitive : boolean, byte, char, double, float, int, long, short

 

위에 보이는 것 같이 Wrapper 클래스는 Primitive 값을 감싸준다

  • Wrapper 클래스는, 다양한 옵션을 제공해준다
  • Wrapper만에 메서드가 있다

 

아래는 Integer 위주로 사용하지만, 다른 Wrapper 클래스들도 사용이 가능하다

 

jshell> Integer integer = new Integer(5);
integer ==> 5

jshell> integer
integer ==> 5

jshell> Integer integer = Integer.valueOf(4);
integer ==> 4

jshell> Integer integer = new Integer("523");
integer ==> 523
  • Wrapper 클래스를 사용해서, 변수를 만들는 방법들이다

 

jshell> Integer i1 = new Integer(5);
i1 ==> 5

jshell> Integer i2 = new Integer(5);
i2 ==> 5

jshell> Integer i3 = Integer.valueOf(5);
i3 ==> 5

jshell> Integer i4 = Integer.valueOf(5);
i4 ==> 5

jshell> i1 == i2
$43 ==> false

jshell> i3 == i4
$44 ==> true
  • i1 == i2false 인 이유
    • 처음부터, 새로운 변수에 새로운 값을 저장을 했다
    • 5와 5는 같은 값이지만, 완전히 다른 변수의 값으로 나눠진다 (새로운 객체를 지속적으로 만드는 것)
  • i3 == i4true 인 이유
    • 똑같은 값의 변수가 있는지 확인을 한다
    • 똑같은 값의 변수가 있으면, 그 변수의 값을 가져와서 사용한다
    • 즉 5라는 숫자는 하나의 변수를 통해서 전파되어, 같은 값으로 인식이 된다 (같은 객체를 이용하는 것)

 

 

Auto Boxing

jshell> Integer i = Integer.valueOf(5);
i ==> 5

jshell> Integer i = 5;
i ==> 5
  • Integer i = Integer.valueOf(5);Integer i = 5; 는 똑같은 것이다
    • Auto Boxing을 통해 코드는 짧아졌고, Integer i = 5;를 하면, .valueOf()를 해줘서, 반복되는 객체가 있는지 확인 후, 값을 변수에 저장해준다

 

 

Dates

Dates도 datatype, 자료형 중 하나다

jshell> import java.time.*

jshell> LocalDateTime DateTime = LocalDateTime.now();
DateTime ==> 2023-05-27T16:03:11.974813

jshell> LocalDate timeNow = LocalDate.now();
timeNow ==> 2023-05-27

jshell> LocalTime localTimeNow = LocalTime.now();
localTimeNow ==> 16:03:43.631642100
  • LocalDateTime DateTime = LocalDateTime.now();
    • 날짜와 시간
  • LocalDate timeNow = LocalDate.now();
    • 날짜
  • LocalTime localTimeNow = LocalTime.now();
    • 시간
jshell> LocalDate today = LocalDate.now();
today ==> 2023-05-27

// ----오늘 날짜에 대한 정보----
jshell> today.getYear();
$53 ==> 2023

jshell> today.getDayOfWeek()
$54 ==> SATURDAY

jshell> today.getDayOfMonth()
$55 ==> 27

jshell> today.getDayOfYear()
$56 ==> 147

jshell> today.getMonth()
$57 ==> MAY

jshell> today.getMonthValue()
$58 ==> 5

// ----년도, 월에 대한 정보----
jshell> today.isLeapYear()
$59 ==> false

jshell> today.lengthOfYear()
$60 ==> 365

jshell> today.lengthOfMonth()
$61 ==> 31

// ---- 몇일, 몇개월, 몇년 후 날짜 ----
jshell> today.plusDays(100)
$62 ==> 2023-09-04

jshell> today.plusMonths(100)
$63 ==> 2031-09-27

jshell> today.plusYears(100)
$64 ==> 2123-05-27

// ---- 빼기도 가능 ----
jshell> today.minusYears(40)
$65 ==> 1983-05-27
  • 시간도 빼기, 더하기, 그 외에 시간에 대한 정보도 받을 수 있다

 

Date도 변수의 값이 바뀌지 않는다

 

오늘 말고 다른 날 구하기

jshell> LocalDate yesterday = LocalDate.of(2023, 05, 26);
yesterday ==> 2023-05-26

jshell> today
today ==> 2023-05-27

jshell> today.withYear(2016)
$68 ==> 2016-05-27

jshell> today.withDayOfMonth(20)
$69 ==> 2023-05-20

jshell> today.withMonth(3)
$70 ==> 2023-03-27

jshell> today.withDayOfYear(120)
$71 ==> 2023-04-30

// 날짜를 비교할 수 있다
jshell> today.isBefore(yesterday)
$72 ==> false

jshell> today.isAfter(yesterday)
$73 ==> true

'Skill Stacks > Java' 카테고리의 다른 글

17. Java Array, ArrayList  (0) 2023.05.31
16. Java Array  (4) 2023.05.29
14. Java String 대체 클래스  (0) 2023.05.27
13. Java Reference Types, 내장 String 클래스  (0) 2023.05.27
12. Java 반복문  (0) 2023.05.19