java.util.Date
클래스는 시스템의 날짜와 시간을 출력해주는 클래스입니다.
Date date=new Date();
new로 초기화하고 사용해요!
Date date2=new Date(0L);
0L를 매개변수로 초기화하면 1970년 1월 1일 0시 0분 0초 UTC 기준시간으로 초기화됩니다. 기준시간이 왜 1970년일까 궁금해서 찾아봤는데 세계표준시가 1970년대에 UTC에서 시행되었기 때문이라고 해요🧐
Milli-second(1/1000초)마다 1씩 증가시킨 시간이에요! 그래서 1000L을 값으러 넘기면 Date date3=new Date(1000L);
기준시간+1초로 초기화된답니다.
현재 컴퓨터 시스템의 시간을 출력합니다. 컴퓨터 시간 설정을 외국으로 변경하면 그 시스템에 맞춰서 나오더라구요 저는 한국에 있으니 kst가 출력됩니다
java.text.SimpleDateFormat
클래스는 원하는 형태로 시간과 날짜를 출력할 수 있는 클래스입니다.
yyyy/MM/dd HH:mm:ss
yy-mm-dd hh:mmss
등등 개발자가 원하는 형태로 시간을 출력할 수 있어요.
문자 | 의미 |
---|---|
YYYY | 4자리 수 연도 |
MM | 월 |
dd | 일 |
HH | 24시간 기준 시 |
hh | 12시간 기준 시 |
mm | 분 |
ss | 초 |
Date currentDate =new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/mm/dd HH:mm:ss");
String dateString = sdf.format(currentDate);
System.out.println(dateString);
SimpleDateFormat의 메소드로 지정한 형태로 Date타입의 값을 변환합니다.
String dateString = String.format("%d%d%d %d:%d:%d", year, month, day, hour, minute, second);
혹은 Date와 SimpleDateFormat 클래스를 사용하지 않고 각각의 값을 직접 설정해서 적용할 수도 있습니다.
java.util.Calendar
클래스는 추상 클래스로 자식클래스인 java.util.GregorianCalendar
가 존재합니다. 그래서 인스턴스 생성 시 다형성이나 싱글톤으로 생성도 가능해요
Calendar cal=new GregorianCalendar(2021,7,22);
< 다형성
Calendar cal = Calendar.getInstance();
< singleton
java.util.GregorianCalendar[...,YEAR=2021,MONTH=6,WEEK_OF_YEAR=30,...
이런식으로 값을 가지고 있어요! 값들은 자식 클래스인 GregorianCalendar의 것임을 알 수 있습니다.
상수 | 의미 |
---|---|
YEAR | 년도 |
MONTH | 월(0부터 시작) |
DAY_OF_MONTH | 일(1~31) |
HOUR_OF_DAY | 24시간 단위의 시간 |
HOUR | 12시간 단위의 시간 |
MINUTE | 분 |
SECOND | 초 |
calendar 변수의 내용을 추출하기 위해서 사용합니다.
get(Calendar.YEAR)
< 년도
get(Calendar.MONTH)
< 월
Calendar 객체를 바로 SimpleDateFormat 클래스에 사용할 순 없습니다. 그렇다고 불가능한건 아닙니다 먼저 Calendar 객체를 Date 객체로 변환하고 변환된 Date 객체를 SimpleDateFormat에 사용하면 됩니다!
Calendar birth=new GregorianCalendar(1940,1,1);
Date birthDate=new Date(birth.getTimeInMillis());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String birthString=sdf.format(birthDate);
System.out.println(birthString);
자바의 기본 데이터 타입을 감싸는 클래스라고 해요.
Boolean, Byte, Short, Integer, Long, Character, Float, Double
기본 자료형은 리터럴 형태를 저장할 수 있는 것들이잖아요 그러나 메소드나 멤버변수를 가질 순 없죠. 이 기본자료형들을 클래스처럼 함수나 변수를 가질 수 있게 만들어놓은 클래스랍니다.
int n1=123;
<기본 자료형
Integer num1= 123;
<Wrapper 클래스
기본자료형과 형태는 똑같아요!
Wrapper 클래스 사용 이유
- 클래스의 메소드(기능), 상수(public static final)를 사용하기 위해
- 매개변수 Object를 가지는 메소드의 인자값으로 사용하기 위해
=>모든 클래스는 Object를 상속받고 있기때문에 Wrapper클래스 역시 Object를 넘겨받는 곳에서 사용할 수 있습니다.- 컬렉션 프레임워크에서 사용하기 위해
Integer.MIN_VALUE
Integer.MAX_VALUE
< 최댓값 최솟값 구할때 사용했던 상수네요!
Wrapper 클래스에 있는 static 메소드입니다. 매개변수는 기본 자료형 타입이고 Wrapper 클래스 타입을 반환해요 valueOf()를 사용해 인스턴스를 생성할 수 있어요.
Integer num1=Integer.valueOf(100);
int타입의 값(100)을 Integer 타입 변수(num1)에 저장했어요.
만약 Integer 변수에 매개변수로 String 타입이 들어간다면 어떻게 될까요?
Integer num2=Integer.valueOf("200");
valueOf()가 자동으로 형변환시켜서 문자를 숫자로 들어가게 해줍니다!
문자열을 매개변수로 받아 기본 자료형 타입의 값을 반환합니다.
int x=Integer.parseInt("12345");
double y=Double.parseDouble("3.141592");
지금까지 여러개의 데이터를 하나의 변수로 묶기 위해서 배열을 사용해왔었는데요 배열은 고정길이를 정해놓고 시작해야하는 단점이 존재하죠? 이를 보완한게 바로 Collection입니다. 가변길이의 자료를 저장하기 위한 generic 클래스예요!
List : 자료들이 저장되는 순서가 중요한 클래스입니다. 순서가 있기 때문에 인덱스를 사용해요. 중복된 값들을 저장할 수 있습니다. List의 자식 클래스로 ArrayList와 LinkedList가 있어요
Set : 자료들에 순서가 없어서 어디에 무슨 값이있는지 모르기 때문에 중복된 값은 저장할 수 없습니다. 수학의 집합같은 역할을 해요
List와 Set은 한 가지 타입의 데이터를 저장할 수 있는 Collection입니다.
java.util.ArrayList
클래스는 내부적으로 배열 자료구조를 이용합니다. 그래서 방식이 배열과 유사해요. 다만 ArrayList는 데이터가 들어간 만큼의 사이즈만 할당됩니다
ArrayList<Integer> list=new ArrayList<Integer>();
< '<Ε>' 안에 클래스 타입을 지정해요.
리스트 요소의 타입에 기본 자료형은 안됩니다.
ArrayList는 데이터를 검색할 땐 인덱스만 찾으면 바로 결과가 나오기 때문에 속도가 빠릅니다. 하지만 추가/삭제할때 그만큼의 빈 공간을 만들어서 생성하고 한 칸씩 앞당겨 자리를 채우기 때문에 속도가 느려요.
List의 크기를 표시합니다.
List에 원소(element)를 추가해요. 값을 넣는 순서대로 인덱스 번호가 부여됩니다.
특정 index의 원소값을 참조(read)해옵니다.
특정 index의 원소(element)값을 변경해줍니다.
특정 index의 원소값을 삭제합니다.
java.util.LinkedList
클래스는 내부적으로 LinkedList 자료구조를 사용합니다. tail과 head를 사용하는데요 전체 데이터의 앞과 뒤가 무슨 데이터가 있는지 지정합니다. 그래서 요소를 추가하거나 저장된 데이터를 삭제하기가 쉬워요! tail과 head의 값만 바꿔주면 되거든요 하지만 그러나 데이터를 참조하는 시간이 오래 걸립니다
List<String> list=new LinkedList<String>();
<List 다형성을 사용
ArrayList | LinkedList |
---|---|
검색속도 빠름 | 검색속도 느림 |
추가 · 삭제속도 느림 | 추가 · 삭제속도 빠름 |
속도의 효율성 차이말고는 다른 기능은 다 똑같은 List입니다.