java.util 패키지
: 프로그램 작성에 유용한 기능을 제공하는 클래스(or 인터페이스)가 선언된 패키지
-Scanner 클래스 : 입력장치로부터 값을 입력받기 위한 기능을 메소드로 제공하기 위한 클래스
-Arrays 클래스 : 배열의 요소를 처리하기 위한 기능을 메소드로 제공하기 위한 클래스
-Random 클래스 : 난수값 관련 기능을 메소드로 제공하기 위한 클래스
Random.nextInt(int bound) : 0 ~ bound-1 범위의 정수 난수값을 반환하는 메소드
import java.util.Random;
public class RandomApp {
public static void main(String[] args) {
Random random = new Random(); //객체생성
for(int i = 1; i<= 5; i++) {
System.out.println(i + "번째 난수값 >> " + random.nextInt(100)); //0 ~ 99 범위의 난수값
}
//출력예시:
//1번째 난수값 >> 55
//2번째 난수값 >> 72
//3번째 난수값 >> 7
//4번째 난수값 >> 54
//5번째 난수값 >> 96
}
}
-UUID 클래스 : 범용적으로 사용되는 식별자(고유값)를 생성하기 위한 기능을 메소드로 제공하는 클래스
UUID.randomUUID() : 식별자를 생성하여 식별자가 저장된 UUID 객체를 반환하는 메소드
=> UUID 객체에 저장된 식별자는 숫자와 영문자(소문자), 4개의 - 문자를 조합하여 36개의 문자가 구성된 문자열로 생성
UUID.toString() : UUID 객체에 저장된 식별자를 문자열로 변환하여 반환하는 메소드
새로운 비밀번호를 생성하여 제공하는 프로그램 만들기
1) Random 클래스 이용
import java.util.Random;
public class NewPasswordApp {
public static String newPasswordOne() {
Random random = new Random();
//비밀번호로 사용될 문자들이 저장된 문자열 생성
String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^&*";
StringBuffer password = new StringBuffer();
for(int i=1;i<=10;i++) {
password.append(str.charAt(random.nextInt(str.length())));
}
return password.toString();
}
public static void main(String[] args) {
System.out.println("새로운 비밀번호-1 = " + newPasswordOne());
}
}
//출력 예시
//새로운 비밀번호-1 = E5T5GRMFZ#
2) UUID 클래스 이용
import java.util.UUID;
public class NewPasswordApp {
public static String newPasswordTwo() {
return UUID.randomUUID().toString().replace("-", "").substring(0, 10).toUpperCase();
}
public static void main(String[] args) {
System.out.println("새로운 비밀번호-2 = " + newPasswordTwo());
}
}
//출력예시
//새로운 비밀번호-2 = 8D1FCF5992
-Date 클래스 : 날짜와 시간을 저장하고 저장된 날짜와 시간 관련 기능을 메소드로 제공하기 위한 클래스
Date.toString() : Date 객체에 저장된 날짜와 시간을 문자열로 변환하여 반환하는 메소드
Date.getYear() : Date 객체에 저장된 날짜와 시간에서 [년]을 반환하는 메소드
=> 1900년부터 1씩 증가된 정수값 반환 >> + 1900 해줘야 한다
Date.getMonth() : Date 객체에 저장된 날짜와 시간에서 [월]을 반환하는 메소드
=> 0(1월) ~ 11(12월) 범위의 정수값 반환 >> + 1 해줘야 한다
Date.getDate() : Date 객체에 저장된 날짜와 시간에서 [일]을 반환하는 메소드
Date.getDay() : Date 객체에 저장된 날짜와 시간에서 [요일]을 반환하는 메소드
=> 0(일요일) ~ 6(토요일) 범위의 정수값이 반환
Date.getTime() : Date 객체에 저장된 날짜와 시간에 대한 타임스템프를 반환하는 메소드
*타임스템프(TimeStamp) : 1970년 1월 1일을 기준으로 1ms마다 1씩 증가된 정수값
=> 날짜와 시간을 정수값(long)으로 표현하여 연산 처리하기 위해 사용
예시)
import java.util.Date;
public class DateApp {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
//Date 클래스의 기본 생성자를 사용하여 객체를 생성하면 시스템의 현재 날짜와 시간이
//저장된 Date 객체가 생성된다.
Date now = new Date();
System.out.println("now.toString() = " + now.toString());
//출력 예시:now.toString() = Wed Apr 19 15:00:24 KST 2023
System.out.println("now = " + now); //참조변수를 출력할 경우 toString() 메소드 자동 호출
String[] day = {"일","월","화","수","목","금","토"};
String printDate = (now.getYear()+1900) + "년 " + (now.getMonth()+1) + "월 " +
now.getDate() + "일 " + day[now.getDay()] + "요일";
System.out.println("현재 날짜 = " + printDate);
//출력 예시 : 현재 날짜 = 2023년 4월 19일 수요일
long currentTime = now.getTime();
//long currentTime = System.currentTimeMillis();
//[2000년 1월 1일 0시 0분 0초]가 저장된 Date 객체 생성
Date wantDate = new Date(100,0,1);
System.out.println("wantDate = " + wantDate); //wantDate = Sat Jan 01 00:00:00 KST 2000
long wantTime = wantDate.getTime();
//2000년 1월 1일부터 현재까지 며칠이 지났는지
System.out.println("연산결과(일) = " + (currentTime-wantTime)/(1000*86400)); //연산결과(일) = 8509
}
}
- Calendar 클래스 : 날짜와 시간을 저장하고 저장된 날짜와 시간 관련 기능을 메소드로 제공하기 위한 클래스
Calendar 클래스 메소드 예시)
Calendar.getInstance() : 시스템의 현재 날짜와 시간이 저장된 Calendar 객체를 생성하여 반환하는 메소드
=> new연산자를 이용해 생성자 호출해 객체를 생성하는 것이 아니라 .getInstance() 이용해 객체 생성
Calendar.toString() : Calendar 객체에 저장된 날짜와 시간을 문자열로 변환하여 반환하는 메소드
Calendar.get(int field) : Calendar 객체에 저장된 날짜와 시간에서 매개변수로 전달받은 Calendar 클래스의
상수(Constant)에 대한 값을 반환하는 메소드
=> [월]은 0(1월)~11(12월) 범위의 정수값으로 표현되며 [요일]은 1(일요일)~7(토요일) 범위의 정수값으로 표현
※ Date 클래스의 Date.getDay() 의 요일은 0(일요일)~6(토요일) 범위의 정수값이 반환되는 것과 구분하자!
Date.getDay() : Date 객체에 저장된 날짜와 시간에서 [요일]을 반환하는 메소드
=> 0(일요일) ~ 6(토요일) 범위의 정수값이 반환
Calendar.get(int field) : Calendar 객체에 저장된 날짜와 시간에서 매개변수로 전달받은 Calendar 클래스의
상수(Constant)에 대한 값을 반환하는 메소드
=> [요일]은 1(일요일)~7(토요일) 범위의 정수값으로 표현
import java.util.Calendar;
public class CalendarApp {
public static void main(String[] args) {
//new 연산자가 아닌 Calendar.getInstance() 이용해 객체 생성
Calendar calendar = Calendar.getInstance();
//System.out.println("calendar.toString() = " + calendar.toString());
System.out.println("calendar = " + calendar); //toString 생략가능
String[] day = {"일","월","화","수","목","금","토"};
//Calendar.get(int field) : Calendar 객체에 저장된 날짜와 시간에서 매개변수로
//전달받은 Calendar 클래스의 상수(Constant)에 대한 값을 반환하는 메소드
// => [월]은 0(1월)~11(12월) 범위의 정수값으로 표현되며 [요일]은 1(일요일)~7(토요일) 범위의 정수값으로 표현
String printDate = calendar.get(Calendar.YEAR)+"년 " + (calendar.get(Calendar.MONTH)+1)
+ "월 " + calendar.get(Calendar.DATE) + "일 "
+ day[calendar.get(Calendar.DAY_OF_WEEK)-1] + "요일";
System.out.println("현재 날짜 = " + printDate); //현재 날짜 = 2023년 4월 19일 수요일
}
}
현재 년월에 대한 달력을 출력하는 프로그램 작성
참고 메소드)
Calendar.set(int field, int value) : Calendar 객체에 저장된 날짜와 시간을 매개변수로 전달받은 상수를
이용하여 날짜와 시간 중 원하는 대상을 변경하는 메소드
Calendar.getActualMaximum(int field) : Calendar 객체에 저장된 날짜와 시간에서매개변수로 전달받은 상수에
대한 최대값을 반환하는 메소드
import java.util.Calendar;
public class CurrentCalendarApp {
public static void main(String[] args) {
//시스템의 현재 날짜와 시간이 저장된 Calendar 객체를 반환받아 저장
Calendar calendar=Calendar.getInstance();
//Calendar 객체에 저장된 날짜와 시간 중 [일]을 [1일]로 변경
//Calendar.set(int field, int value) : Calendar 객체에 저장된 날짜와 시간을 매개변수로
//전달받은 상수를 이용하야 날짜와 시간 중 원하는 대상을 변경하는 메소드
calendar.set(Calendar.DATE, 1);
//Calendar 객체에 저장된 날짜와 시간 중 [요일]을 반환받아 저장
int week=calendar.get(Calendar.DAY_OF_WEEK);
//System.out.println("week = "+week);
System.out.println(" "+calendar.get(Calendar.YEAR)+"년 "
+(calendar.get(Calendar.MONTH)+1)+"월");
System.out.println("============================");
System.out.println(" 일 월 화 수 목 금 토");
System.out.println("============================");
//[1일]을 출력하기 전까지의 요일을 공백으로 출력
for(int i=1;i<week;i++) {
System.out.print(" ");
}
//1일부터 [월]의 마지막 날짜까지 출력
//Calendar.getActualMaximum(int field) : Calendar 객체에 저장된 날짜와 시간에서
//매개변수로 전달받은 상수에 대한 최대값을 반환하는 메소드
for(int i=1;i<=calendar.getActualMaximum(Calendar.DATE);i++) {
//날짜 출력 >> 자릿수 맞춤
if(i <= 9) {
System.out.print(" "+i);
} else {
System.out.print(" "+i);
}
week++;
if(week % 7 == 1) {//다음 출력값(일)이 일요일인 경우
System.out.println();
}
}
System.out.println();
System.out.println("============================");
}
}
출력결과

java.text 패키지
: 객체에 저장된 값을 변환하는 기능의 클래스(인터페이스)가 선언된 패키지
- SimpleDateFormat 클래스 : Date 객체와 String 객체를 서로 반대로 변환하기 위한 기능을 메소드로 제공하기 위한 클래스
메소드 예시)
SimpleDateFormat.foramt(Date date) : Date 객체에 저장된 날짜와 시간을 SimpleDateFormat 객체에 저장된 패턴정보를
사용하여 문자열(String객체)로 변환해 반환하는 메소드
SimpleDateFormat.applyPattern(String pattern) : SimpleDateFormat 객체에 저장된 패턴정보를 변경하는 메소드
SimpleDateFormat.parse(String str) : SimpleDateFormat 객체에 저장된 패턴정보와 동일한 문자열을 전달받아 문자열로
표현된 날짜와 시간이 저장된 Date 객체를 생성하여 반환하는 메소드 - ParseException 발생 가능
=> SimpleDateFormat 객체에 저장된 패턴정보와 일치하지 않는 문자열이 전달된 경우 ParseException 발생 가능 - 예외 처리
SimpleDateFormat 클래스로 객체를 생성하기 위한 매개변수에 날짜와 시간에 대한 패턴정보를 문자열을 전달받아
객체로 생성하는 생성자를 사용한다.
=> 패턴정보 : 패턴문자(날짜와 시간을 임의의 문자로 표현)를 사용하여 표현된 문자열
=> 패턴문자 : y(년), M(월), d(일), E(요일), AM or PM(오전 또는 오후), h(시:12), H(시:24), m(분), s(초)
예시) SimpleDateFormat foramt = new SimpleDateFormat("yyyy년 MM월 dd일 E요일");
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatApp {
public static void main(String[] args) {
Date now = new Date();
//SimpleDateFormat 클래스로 객체를 생성하기 위한 매개변수에 날짜와 시간에 대한
//패턴정보를 문자열을 전달받아 객체로 생성하는 생성자를 사용
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy년 MM월 dd일 E요일"); //매개변수로 주로 String pattern을 이용
//SimpleDateFormat.foramt(Date date)
String printDate = dateFormat.format(now); //Date 객체 >> String 객체
System.out.println("현재 날짜 = " + printDate);
//SimpleDateFormat.applyPattern(String pattern)
//: SimpleDateFormat 객체에 저장된 패턴정보를 변경
dateFormat.applyPattern("yyyy-MM-dd HH:mm:ss");
System.out.println("현재 = " + dateFormat.format(now)); //현재 = 2023-04-19 16:02:59
String want = "2000-01-01 00:00:00";
try {
//SimpleDateFormat.parse(String str)
//SimpleDateFormat 객체에 저장된 패턴정보와 일치하지 않는 문자열이 전달된
//경우 ParseException 발생 가능 - 예외 처리
Date wantDate = dateFormat.parse(want); //String 객체 >> Date 객체
System.out.println("wantDate = " + wantDate);
} catch (ParseException e) {
System.out.println("[에러]형식에 맞게 날짜와 시간을 입력해 주세요.");
}
//wantDate = Sat Jan 01 00:00:00 KST 2000
}
}
- DecimalFormat 클래스 : Number 객체(숫자값)와 String 객체를 서로 반대로 변환하기 위한 기능을 메소드로 제공하기 위한 클래스
DecimalFormat 클래스로 객체를 생성하기 위한 매개변수에 숫자값에 대한 패턴정보를 문자열로 전달받아 객체로 생성하는
생성자를 이용
=> 패턴문자 : #(숫자 - 공백), 0(숫자 - 0), 콤마(,), 소숫점(.), 달러($)
예시) DecimalFormat decimalForamt = new DecimalFormat("###,###,##0");
메소드 예시)
DecimalFormat.format(long number) : 숫자값을 전달받아 DecimalFormat 객체에 저장된 패턴정보를 사용하여
문자열로 변환하여 반환하는 메소드
DecimalFormat.getInstance() : 패턴정보가 저장된 DecimalFormat 객체를 반환하는 메소드
=> 3자리마다 ,를 사용하여 숫자값을 표현하는 패턴정보
DecimalFormat.getCurrencyInstance() : 패턴정보가 저장된 DecimalFormat 객체를 반환하는 메소드
=> 앞에 시스템이 사용하는 화폐단위를 붙이고 3자리마다 ,를 사용하여 숫자값을 표현하는 패턴정보
import java.text.DecimalFormat;
public class DecimalFormatApp {
public static void main(String[] args) {
int money = 100_000_000;
System.out.println("금액 = " + money + "원"); //금액 = 100000000원
//DecimalFormat 클래스로 객체를 생성하기 위한 매개변수에 숫자값에 대한 패턴정보를
//문자열로 전달받아 객체로 생성하는 생성자를 이용
DecimalFormat decimalForamt = new DecimalFormat("###,###,##0");
//DecimalFormat.format(long number) : 숫자값을 전달받아 DecimalFormat 객체에 저장된
//패턴정보를 사용하여 문자열로 변환하여 반환하는 메소드
System.out.println("금액 = " + decimalForamt.format(money) + "원");
//금액 = 100,000,000원
=============================================================================
//DecimalFormat.getInstance() : 패턴정보가 저장된 DecimalFormat 객체를 반환하는 메소드
// => 3자리마다 ,를 사용하여 숫자값을 표현하는 패턴정보
System.out.println("금액 = " + DecimalFormat.getInstance().format(money)+"원");
//금액 = 100,000,000원
=============================================================================
//DecimalFormat.getCurrencyInstance() : 패턴정보가 저장된 DecimalFormat 객체를 반환하는 메소드
// => 앞에 시스템이 사용하는 화폐단위를 붙이고 3자리마다 ,를 사용하여 숫자값을 표현하는 패턴정보
System.out.println("금액 = " + DecimalFormat.getCurrencyInstance().format(money));
//금액 = ₩100,000,000
}
}
'학원 > 복기' 카테고리의 다른 글
0421 - 정규표현식, java.awt 패키지,이벤트 처리 프로그램 (0) | 2023.04.22 |
---|---|
0420 - 제너릭, Collection 클래스, Set 인터페이스, List 인터페이스, Map 인터페이스 (0) | 2023.04.20 |
0417 - StringBuffer 클래스,Wrapper 클래스, Integer 클래스 / 스레드, 다중스레드, 스레드 동기화 (0) | 2023.04.17 |
0414 - 예외전달, Java API, System클래스, String클래스 (0) | 2023.04.15 |
0413 - 정적 내부 클래스,익명의 내부 클래스, 패키지, import 키워드, 어노테이션, 접근 제한자,예외처리 (0) | 2023.04.13 |