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);
    }
}

import java.math.BigInteger;

public class Ex07 {
	public static void main(String[] args) {
    	// BigInteger : 아주 큰 정수를 다루기 위해 제공하는 클래스
        BigInteger a = new BigInteger("123456789123456789");
        BigInteger b = new BigInteger("123456789123456789");
        BigInteger c;
        
        c = a.add(b);
        System.out.println("합: "+c);
        
        c = a.subtract(b);
        System.out.println("차: "+c);
        
        c = a.multyply(b);
        System.out.println("곱: "+c);
        
        c = a.divide(b);
        System.out.println("몫: "+c);
        
        c = a.pow(10);
        System.out.println("승: "+c);
    }
}

public class Ex06{
	public static void main(String[] args) {
    	// Long a1 = 10; 컴파일 오류.
    	Long a1 = 10L;
        long x1 = 10;
        Long a2 = new Long(10);
        // 생성자로 하지말고 int parseInt(String) 또는 Integer valueOf(String) 사용을 권장.
        
        int t = (int)x1; // long을 int로 캐스팅
        
        // 클래스는 상속관계에서만 캐스팅이 가능하다.
        // Long과 Integer은 상속관계가 아니므로 캐스팅이 불가능하다.
        // Integer s = (Integer) a1; 컴파일 오류
        
        System.out.println(a1+","+a2);
        System.out.println(x1);
        System.out.println(t);
        
        double d;
        d = Double.parseDouble("123.5"); // String을 double로 변환
        System.out.println(d);
        
        d = Double.valueof("123,5"); // String을 double로 변환
        System.out.rpitnln(d);
        
    }
}

String을 변경할 때는 parse , valueOf를 사용하자.

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

0719_Ex08_Java API : math.BigDecimal  (0) 2021.07.19
0719_Ex07_Java API : Math.BigInteger  (0) 2021.07.19
0719_Ex05_Java API : Integer  (0) 2021.07.19
0719_Ex04_Java API : Integer  (0) 2021.07.19
0719_Ex03 Java API : Object clone  (0) 2021.07.19

+ Recent posts