JAVA

[JAVA #9] 10. 기본 API

lyndaa 2023. 3. 3. 14:54
  • String 관련 클래스
    • String  클래스
      • 문자열 값 수정 불가능, immutable(불변) (새롭게 공간이 할당됨)
      • 수정 시 수정된 문자열이 새로 할당 되어 새 주소를 넘김
      • String Pool, Singleton 
        • StringBuffer 클래스
          • 문자열 값 수정 가능, mutable(가변)
          • 수정, 삭제 등이 기존 문자열에 수정되어 적용
          • 기본 16문자 크기로 지정된 버퍼를 ㅣ용하면 크기 증가 가능
          • 쓰레드 safe기능 제공(성능 저하 요인)
        • StringBuilder 클래스
          • StringBuffer와 동일하나 쓰레드 safe기능을 제공하지 않음
          • 메소드 체이닝
        • StringTokenizer 클래스
          • String클래스에서 제공하는 split()메소드와 같은 기능을 하는 클래스로 생성 시 전달받은 문자열을 구분자로 나누어 각 토큰에 저장

* StringBuffer, StringBuilder 출력 실습

package com.chap02_StringBuffer_StirngBuilder;

public class Run {
	public static void main(String[] args) {
		//method1();
		//method2();
		method3();
		
	}
	public static void method1() {
		StringBuilder sb = new StringBuilder("안녕 반가워");
		System.out.println(sb);
		System.out.println(sb.capacity());
		System.out.println(sb.length());
		
	}
	public static void method2() {
		String str = "반가워! ";
		System.out.println(System.identityHashCode(str));
		str += "난 String이라고 해";
		System.out.println(System.identityHashCode(str));
		
		StringBuffer sbf = new StringBuffer("안녕! ");
		System.out.println(System.identityHashCode(sbf));
		sbf.append("난 StringBuffer야");
		System.out.println(System.identityHashCode(sbf));
		
	}
	public static void method3() {
		StringBuilder sb = new StringBuilder("난 ");
		
		//append
		sb.append("잠이 온다").append("~!");
		
		//insert
		sb.insert(0, "늦게 잠을 자느라");
		
		//delete(0,10)
		sb.delete(0, 10);
		
		//reverse
		sb.reverse();
		System.out.println(sb);
	}
}

* StringTokenizer 실습

package com.chap03_stringTokenizer;

import java.util.StringTokenizer;

public class Run {
	//countToken : 토큰 수 파악, nextToken : 토큰 읽어오기, hasMoreTokens : 토큰이 남아있는지 확인 후 boolean값 리턴
	public static void main(String[] args) {
		String str = "이창진,19,경기도 화성시,남";
		StringTokenizer st = new StringTokenizer(str,",");
		System.out.println(st.countTokens());
		
		while(st.hasMoreTokens()) {
			System.out.println(st.nextToken());
		}
		
		
	}
}
  • Wrapper 클래스
    • Primitive Data Type을 객체화 해주는 클래스
    • String을 기본 자료형으로 바꾸기
    • 기본 자료형을 String으로 바꾸기 
      • String a = Byte.valueOf((byte)1).toString();
      • valueOf()와 toString() 차이
      • String.valueOf() 메서드를 사용하면 변환 값이 null 이면 그 값을 문자열("null")로 반환하는 반면에 toString() 메서드는 NullPointerException 오류를 발생

* Wrapper 클래스 실습

package com.chap04_wrapperClass;

public class Run {
	public static void main(String[] args) {
		//boxing 기본 자료형 형태들 객체화됨
		Integer i = new Integer(10);
		Double d = new Double(15);
		//autoBoxing
		Integer i2 = 10;
		
		System.out.println(i.equals(i2));
		System.out.println(i.compareTo(i2));
		//같을때 0, i2가 크면 음수, i가 크면 양수
		
		//unBoxing 객체를 기본 자료형으로 바꿈
		int pi =i.intValue();
		double pd = d.doubleValue();
		//autoUnBoxing
		int a = i;
		int b = i2;
		abox(a+b);
		//형변환 : int >> autoBoxing >> Integer >> 다형성 >>Object
		
	}
	
	public static void abox(Object obj) {
		System.out.println(obj);
		System.out.println((Integer)obj);
		System.out.println((int)obj);
	}
}
  • 날짜 관련 클래스
    • Calendar 클래스
      • 생성자가 protected이기 때문에 new연산자를 통해 객체 생성 불가능
      • getInstance() 메소드를 통해서 객체 생성
    • GregorianCalendar 클래스
      • Calendar 클래스의 후손 클래스
      • 년, 월, 일, 시, 분, 초 정보를 필드를 이용하여 다룰 수 있음
    • SimpleDateFormat 클래스
      • Date의 날짜, 시간 정보를 원하는 format으로 출력하는 기능 제공
      • java.text 패키지에 속해있음
      • 해당 클래스의 forma() 메소드 활용
    • Formatter 클래스
      • 값 출력 시 format 적용하여 출력
      • Formatter 객체 생성 시 변환된 결과를 보낼 곳의 정보를 생성자 인자로 전달
      • 해당 클래스의 forma() 메소드 활용

* 날짜 관련 클래스 실습

package com.chap05_date;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class Run {
	public static void main(String[] args) {
		//Date originTime = new Date();
		//Date originTime = new Date(0L); //처음 기준
		//Date originTime2 = new Date(1000L);
		
		String originTime = new Date(0L).toGMTString();
		
		System.out.println(originTime);
		
		Date day = new Date(123,9-1,9);
		System.out.println(day);
		
		Date today = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
		System.out.println(sdf.format(today));
		System.out.println(today.getDate());
		
		System.out.println("---------");
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar);
		
		calendar.set(2022, 9-1, 9);
		
		System.out.println(calendar.get(1)+"년 "
		+(calendar.get(Calendar.MONTH)+1)+"월 "
				+calendar.get(Calendar.DATE)+"일 "
				+calendar.get(Calendar.HOUR)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND));
		sdf = new SimpleDateFormat("yyyy년 MM월 dd일 hh:mm:ss");
		System.out.println(sdf.format(calendar.getTime()));
		
		System.out.println("=====그레고리안=====");
		GregorianCalendar gc = new GregorianCalendar();
		System.out.println(gc);
		System.out.println(gc.getTime()); //date 객체로 출력
		System.out.println(gc.get(Calendar.YEAR));
		System.out.println(gc.get(GregorianCalendar.MONTH)+1);
		
		gc.set(2019, 12-1, 25);
		System.out.println(gc.getTime());
}
}

👆🏻

toGMTString() : 그리니치 표준시(GMT)를 사용하여 문자열로 변환된 일자를 반환한다.

'JAVA' 카테고리의 다른 글

[JAVA #9] 12. 입출력(IO)  (0) 2023.03.07
[Java #9 실습] 11. 예외처리(Exception)  (0) 2023.03.07
[Java 실습 #8] 9. 다형성  (0) 2023.03.02
[JAVA #8] 9. 다형성(Polymorphism)  (1) 2023.03.02
[JAVA #7] 8. 상속(Inherit)  (0) 2023.02.28