중첩 클래스
일반클래스 객체 생성
Outer클래스 객체1 = new Outer클래스();
Outer클래스.Inner클래스 객체2 = 객체1.new Inner클래스();
변수에 직접저장
int 변수 = new Outer클래스().new Inner클래스().불러올변수;
정적 클래스 객체 생성
Outer클래스.Inner클래스 객체이름 = new Outer클래스.Inner클래스();
변수에 직접저장
int 변수 = new Outer클래스. Inner클래스().불러올변수;
public class ClassA {
int a = 10;
//중첩 클래스
class ClassB{
int b = 11;
}
static class ClassC{
int c = 12;
}
}
public class ClassExample {
public static void main(String[] args) {
// classB에 field b 값 가져와보기
// ClassA c1 = new ClassA();
// ClassA.ClassB c2 = c1.new ClassB();
// System.out.println(c2.b);
int b = new ClassA().new ClassB().b;
// classC에 field c 값 가져와보기
// ClassA.ClassC c3 = new ClassA.ClassC();
// System.out.println(c3.c);
int c = new ClassA.ClassC().c;
}
}
중첩 클래스와 중첩 인터페이스 나중에 추가로 공부하기
Unit 클래스
Date 클래스
Date date = new Date(); // import
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.DD");
//date 타입 포맷 변경
String 변수명 = sdf.format(date);
//String 타입 포맷 변경
String 변수명 = sdf.parse(date_str);
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
DateExample de = new DateExample();
de.method1();
}
public void method1() {
// Date 객체 생성 (+import)
Date date = new Date();
System.out.println(date);
try {
//잠깐동안 컴퓨터를 멈춘다 ms기준이므로 1초를 잠시 멈춤
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Date date2 = new Date();
System.out.println(date2);
// 시간을 출력할땐 get을 활용
long time = date2.getTime()-date.getTime();
System.out.println(time);
}
}
Wed Mar 27 11:11:32 KST 2024
Wed Mar 27 11:11:33 KST 2024
1016
Date객체의 toSting()메소드는 영문으로 된 날짜를 리턴하기 때문에 원하는 포맷으로 문자열을 얻고 싶다면
SimpleDateFormat 클래스와 함께 사용한다
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
DateExample de = new DateExample();
de.method2();
}
public void method2() {
Date date = new Date();
// SDF + ( ctrl + space )
SimpleDateFormat sdf = new SimpleDateFormat("yyyy. MM. dd HH:mm:ss");
String date_str = sdf.format(date);
System.out.println(date_str);
}
}
2024. 03. 27 11:21:09
형식 문자열에 포함되는 기호를 입력
문자열을 date로 변경
format과 문자열은 같은 형식이여야한다.
ex. format > "yyyy-MM-dd" 형식인 경우 문자열도 str > "2024-03-27" 형태여야한다.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
DateExample de = new DateExample();
de.method3();
}
public void method3() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String date_str = "20240328";
try {
Date date = sdf.parse(date_str);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
문자열 입력받은 날짜와 현재 날짜간의 남은 시간 구하기
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
DateExample de = new DateExample();
de.method4();
}
public void method4() {
// String 을 입력 받고 해당 날짜와 현재 날짜의 차이를 구하시오
// ex 20240411
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String date_str = "20241022";
try {
Date date = sdf.parse(date_str);
Date cur = new Date();
Long time = date.getTime()-cur.getTime();
System.out.println(time/1000/86400);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
현재 시간에서 n일 뒤의 날짜 구하기
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
DateExample de = new DateExample();
de.method5();
}
public void method5() {
Date date = new Date();
// 1000*86400*100 인 경우 long타입에 벗어나므로 정확한 값 출력X
long time = date.getTime()+1000L*86400*100;
Date date2 = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
System.out.println(sdf.format(date2));
}
}
Calendar 클래스
Calendar 변수명1 = Calendar.getInstance();
Date 변수명2 = 변수명1.getTime(); // date 타입으로 출력
int week = cal.get(Calendar.DAY_OF_WEEK); // 요일 1 : 일요일 ~ 7 : 토요일
// 해당 날짜에 더하고/빼고 싶을 때
cal.add(Calendar.DATE, 100); // DATE 자리에는 YEAR, MONTH 등 쓸 수 있음
cal.add(Calendar.DATE, -100); // 마이너스 추가
// 원하는 날짜를 지정할 때
cal.set(Calendar.YEAR, 2020);
// MONTH는 0부터 시작하기 때문에 원하는 월에 +1값을 해줘야함
// 또는 Calendar.MARCH 와 같은 값을 입력
cal.set(Calendar.MONTH, Calendar.MARCH);
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
DateExample de = new DateExample();
de.method6();
}
public void method6() {
// singleton 형식
Calendar cal = Calendar.getInstance();
// 달을 더하고 싶을 땐 MONTH
// 년을 더하고 싶을 땐 YEAR
cal.add(Calendar.DATE, 100);
Date date = cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
System.out.println(sdf.format(date));
}
2024.07.05
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
DateExample de = new DateExample();
de.method6();
}
public void method6() {
// singleton 형식
Calendar cal = Calendar.getInstance();
// 달을 더하고 싶을 땐 MONTH
// cal.add(Calendar.DATE, 100);
// cal.set(Calendar.MONTH, Calendar.MARCH);
int week = cal.get(Calendar.DAY_OF_WEEK);
System.out.println(week);
int last = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(last);
}
4 // 수요일
31
'JAVA > JAVA BASIC' 카테고리의 다른 글
[JAVA] Collection Framework (1) | 2024.03.28 |
---|---|
3/27 Homework 달력만들기 (0) | 2024.03.27 |
[JAVA] 상속 - 추상 클래스, 인터페이스 (0) | 2024.03.27 |
[JAVA] Getter Setter, 상속 (1) | 2024.03.26 |
[JAVA] enum (0) | 2024.03.25 |