import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Ex12_Date {
	public static void main(String[] args) {
		Date date = new Date(); // 현재 시스템의 시간으로 Date 객체 생성
		System.out.println(date); // Tue Jul 20 15:06:29 KST 2021
		
/*		
		// 권장하지 않음(사용하지 말 것을 권장함)
		int y = date.getYear()+1900;
		int m = date.getMonth()+1;
		int d = date.getDate();
		System.out.println(y+"-"+m+"-"+d);
*/
		
		// 1970년 1월 1일 0시 0분 0초를 기준으로 밀리초 단위로 혼산하여 반환
		long t = date.getTime();
		System.out.println(t);
		
		Date date2 = new Date(1676761482859L);
		System.out.println(date2);
		
		// date 객체의 날짜가 date2의 객체 값보다 이후 날짜인지 boolean으로 반환
		
		// SimpleDateFormat : 문자열 <-> Date
		// Date 객체의 날짜를 문자열로 출력하기
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 HH:mm:ss");
		String str = sdf.format(date);
		System.out.println(str);
		
		// 문자열을 Date로 변환
		str = "2000-10-07"; // 하이픈이 있으면 밑에도 하이픈 적어야함. 같아야함!
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
		
		try {
			// 예외를 내포하고 있는 코드
			Date date3 = sdf2.parse(str);
			
			String s = sdf.format(date3);
			System.out.println(s);
		} catch (ParseException e) {
			// 예외가 발생할 때 실행 할 코드
			e.printStackTrace();
		}

	}
}

try는 아직 제대로 배우지는 않았음.

향후 수업에서 배울 예정! 그냥 있다 정도만 기억할 것.

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0720_복습_읽어보기  (0) 2021.07.21
0720_Ex15_Math : Java API  (0) 2021.07.21
0720_Ex06_Calendar : Java API  (0) 2021.07.20
0720_Ex05_Calendar : Java API  (0) 2021.07.20
0720_Ex04_StringTokenizer : Java API  (0) 2021.07.20
import java.util.Calendar;
import java.util.Scanner;

public class Ex06_Calendar {

	public static void main(String[] args) {
		// 날짜를 입력받아 요일을 출력하기
		// 날짜 ? 2021-07-20
		// 2021-07-20은 일요일입니다.
		// 입력받은 날짜 형식이 yyyy-mm-dd형식이 아니면 재입력
		Scanner sc = new Scanner(System.in);
		String input;
		
		do {
			System.out.print("날짜[yyyy-mm-dd] ? ");
			input = sc.next();
		} while(! input.matches("^(\\d{4}-\\d{2}-\\d{2})$"));
		// ^는 첫번째 $는 마지막. 4개숫자-2개숫자-2개숫자 형식으로
		String [] ss = input.split("-"); // StringTokenizer 대신 split을 사용하면 더 쉽다!
		int y = Integer.parseInt(ss[0]);
		int m = Integer.parseInt(ss[1]);
		int d = Integer.parseInt(ss[2]);
		String week;
		
		Calendar cal = Calendar.getInstance();
		cal.set(y, m-1, d);
		System.out.printf("%tF는 %tA 입니다.\n", cal, cal);
		
		y = cal.get(Calendar.YEAR);
		m = cal.get(Calendar.MONTH)+1;
		d = cal.get(Calendar.DATE);
		week = String.format("%tA", cal);
		System.out.printf("%04d-%02d-%02d는 %s입니다.\n", y, m, d ,week);
		// 남는 자리수는 0으로 채워줌
		
		String[] ww=new String[] {"일","월","화","수","목","금","토"};
		week = ww[cal.get(Calendar.DAY_OF_WEEK)-1];
		System.out.println("요일은"+week+"요일 입니다.");
		System.out.println("-------------------------");
		
		sc.close();
	}

}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0720_Ex15_Math : Java API  (0) 2021.07.21
0720_Ex12_Date : Java API  (0) 2021.07.21
0720_Ex05_Calendar : Java API  (0) 2021.07.20
0720_Ex04_StringTokenizer : Java API  (0) 2021.07.20
0720_Ex03_StringBuilder : Java API  (0) 2021.07.20
import java.util.Calendar;

public class Ex05_Calendar {
	public static void main(String[] args) {
    	// Calendar 클래스는 추상 클래스(미완성)로 직접 객체 생성이 불가하다.
        
        // 현재 시스템 날짜를 이용하여 Calendar 객체 생성
        Calendar cal = Calendar.getInstance();
        
        // %tF : 년-월-일
        // %tA : 요일
        // %tT : 시간(시:분:초)
        // 1$ 첫번째에 있는 것
        // String s = String.format("%tF %tA %tT", cal, cal, cal);
        String s = String.format("%1$tF %1$tA %1$tT", cal);
        System.out.println(s);
        
        int y = cal.get(Calendar.YEAR);
		int m = cal.get(Calendar.MONTH)+1; // 0(1월)~11(12월)
		int d = cal.get(Calendar.DATE);
		int w = cal.get(Calendar.DAY_OF_WEEK); // 1(일요일)~7(토요일)
		int end = cal.getActualMaximum(Calendar.DATE);
        
        System.out.println(y+"년 "+m+"월 "+d+"일");
		System.out.println("요일(1:일, 7:토) : "+w);
		System.out.println("이번달 마지막 날짜 : "+end);
		
        // 2021년 8월 5일로 날짜 변경
		cal.set(2021, 8-1, 5);
		System.out.printf("%tF\n", cal);
		
		// 2021년 5월 32일로 날짜 변경
		cal.set(2021, 5-1, 32);
		System.out.printf("%tF\n", cal); // 2021-06-01
		
		// 2021-08-10일 부터 100일 후는?
		cal.set(2021, 8-1, 10);
		cal.add(Calendar.DATE, 100); // 날짜를 100일 더한다.
		System.out.printf("%tF\n", cal);
		
		
    }
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0720_Ex12_Date : Java API  (0) 2021.07.21
0720_Ex06_Calendar : Java API  (0) 2021.07.20
0720_Ex04_StringTokenizer : Java API  (0) 2021.07.20
0720_Ex03_StringBuilder : Java API  (0) 2021.07.20
0720_Ex02_StringBuilder : Java API  (0) 2021.07.20
import java.util.StringTokenizer;

public class Ex04_StringTokenizer {
	public static void main(String[] args){
    	String str;
        String[] ss;
        int n;
        
        str = "자바,안드로이드,HTML,스프링,오라클,javascript,JPA";
        // 문자열을 토큰으로 구분하여 보냄
        StringTokenizer st = new StringTokenizer(str, ","); // 구분자는 출력하지 않음(기본)
        // StringTokenizer st = new StringTokenizer(str, ",", true); 구분자도 문자열로 출력
        
        ss = new String[st.countTokens()]; // countTokens() : 보낼 문자열의 총 갯수
        
        n = 0;
        while(st.hasMoreTokens()) {
        // true if and only if there is at least one token in the string after the current position; false otherwise
        // 현재 위치 후에 1개 이상의 토큰이 있으면 true를 반환, 그렇지 않으면 false를 반환하는 boolean 리턴 메소드
        	ss[n++] = st.nextToken();
            // 문자열 0칸부터 차례대로 st에 있는 토큰들을 넣어준다.
        }
        
        System.out.println("파싱된 문자열...");
        for(int i=0; i<ss.length; i++) {
        	System.out.println(ss[i]);
        }
      
    }  
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0720_Ex06_Calendar : Java API  (0) 2021.07.20
0720_Ex05_Calendar : Java API  (0) 2021.07.20
0720_Ex03_StringBuilder : Java API  (0) 2021.07.20
0720_Ex02_StringBuilder : Java API  (0) 2021.07.20
0720_Ex01_String : Java API  (0) 2021.07.20
public class Ex03_StringBuilder {
	public static void main(String[] args) {
    	Test3 tt = new Test3();
        String s;
        
        s = tt.generatePwd();
        System.out.println(s);
        
        s = tt.generatePwd();
        System.out.println(s);
    }
}
class Test3 {
	// 10자리 임시 패스워드 만들기
    public String generatePwd() { // 가변적인 문자열이므로 Builder나 Buffer를 써야함.
    	StringBuilder pw = new StringBuilder();
        String s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*-+abcdefghijklmnopqrstuvwsyz";
        // 원하는 문자를 다 넣어놓음! 저 안에서만 나온다.
        int n;
        
        for(int i=0; i<10; i++) {
        	n = (int)(Math.random() * s.length());
            // 0<=난수<s의 길이
			// String s에 있는 것중에 하나를 임의적으로 뽑아 그 위치를 숫자로 반환
            pw.append(s.substring(n, n+1));
			// 그 위치에 해당하는 문자를 pw에 10자리가 될때 까지 붙여준다.
        }
        
        return pw.toString();
        
    }
}

실행할때마다 다른 난수가 생성됨을 볼 수 있다.

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0720_Ex05_Calendar : Java API  (0) 2021.07.20
0720_Ex04_StringTokenizer : Java API  (0) 2021.07.20
0720_Ex02_StringBuilder : Java API  (0) 2021.07.20
0720_Ex01_String : Java API  (0) 2021.07.20
0719_Ex08_Java API : math.BigDecimal  (0) 2021.07.19
public class Ex02_StringBuilder {
	public static void main(String[] args) {
    	StringBuilder sb = new StringBuilder();
        
        sb.append("seoul");
        String s = sb.toString().toUpperCase();
        System.out.println(s);
        
        sb.append("우리나라");
        sb.append("대한민국");
        sb.append("부산");
        
        System.out.println(sb);
        
        // seoul 앞에 한국 추가
        sb.insert(0, "한국"); // 0이 첫번째임
        System.out.println(sb);
        
        // seoul 위치를 숫자로 반환
        System.out.println(sb.indexOf("seoul")); // 2번에 있음
        
        // seoul 뒤에 인천 추가
        sb.insert(sb.indexOf("seoul")+"seoul".length(), "인천");
        // 2 + 5 = 7번째에 인천을 추가해라
        
        // 대한민국 삭제 : delete(s, e) -> s인덱스에서 e-1인덱스까지 삭제
        sb.delete(sb.indexOf("대한민국"), sb.indexOf("대한민국")+"대한민국".length());
        System.out.println(sb);
        
        // 우리나라부터 끝까지 삭제
        sb.delete(sb.indexOf("우리나라"), sb.length());
        System.out.println(sb);
        
        // 모두 삭제
        sb.delete(0, sb.length());
        System.out.println(sb);
        
    }
}

String
문자열은 상수풀에 저장(String Constant Pool)
내용불변 (Immutable) 내용이 변경되면 새로운 영역에 메모리를 할당 받아 처리하고 이전 공간은 가비지 컬렉터의 대상이 된다.
final 클래스로 하위 클래스를 가질 수 없다.

public class Ex01_String {
	public static void main(String[] args){
    	String s;
        s = "자바"+", 스프링"+", 오라클"+", HTML";
        // 내부적으로 StringBuilder를 사용하므로 성능이 우수.
/*        
  		s = "자바";
        s+=", 스프링";
        s+=", 오라클";
        s+=", HTML"; 성능이 매우 안좋음. 
*/        

		StringBuffer sb = new StringBuffer();
        sb.append("자바");
        sb.append(", 스프링");
        sb.append(", 오라클");
        sb.append(", HTML");
        // StringBuffer sb객체를 생성하고 append 메소드를 사용해서 가변적인 문자를 StringBuffer에서 붙인다.
        
        System.out.println(s);
        System.out.println(sb);
        
    }
}

import java.math.BigDecimal;

public class Ex08{
	public static void main(String[] args) {
    	BigDecimal a = new BigDecimal("123456789.123456789");
        BigDecimal b = a.movePointLeft(3); // 소수점을 왼쪽으로 3칸 옮기기
        BigDecimal c;
        
        System.out.println(b);
        
        // 나누기
        c = a.dibide(b);
        System.out.println(c); // 1E+3
        
        // 나누기(반올림하지 않음)
        c = a.divide(b, BigDecimal.ROUND_DOWN);
        System.out.println(c) // 1000.000000000
        
        // 나누기(유효자리수 5자리, 반올림하지 않음)
        c = a.divide(b, 5, BigDecimal.ROUND_DOWN);
        System.out.println(c) // 1000.00000
        
        double d = c.doubleValue();
        System.out.println(d);
    }
}

+ Recent posts