본문 바로가기
Programming/Java

[Java] 기본 API

by AI_Wooah 2022. 3. 7.

문자열 바꿀 일 많으면 StringBuffer클래스 사용

(시험)split과 StringTokenizer

값을 한번 꺼내 쓰면 다시 꺼내 쓸 수 없다.

split은 자르는 기준이 정해져 있다

Tokenizer는 기준을 여러 개 입력 해주면 그중에 순서나 위치 상관 없이 패턴에 따라 걸러준다.

public void splitTest() {
		String str = "java, oracle, JDBC, HTML5, CSS";
		String[] split = str.split(", ");
		
		System.out.println("분리된 문자열의 갯수는 : " + split.length);
		
		for(int i = 0; i < split.length; i++) {
			System.out.println(split[i]);
		}
		
		
		for(String s : split) {
			System.out.println(s);
		}
		
		
		StringTokenizer stn = new StringTokenizer(str, ", ");
		
		System.out.println("분리된 문자열의 갯수 stn : " + stn.countTokens());
		
		while(stn.hasMoreTokens()) {
			System.out.println(stn.nextToken());
		}
		
		System.out.println("꺼내고 난 후  문자열의 갯수 stn : " + stn.countTokens());
	}

실행 결과

분리된 문자열의 갯수는 : 5
java
oracle
JDBC
HTML5
CSS
java
oracle
JDBC
HTML5
CSS
분리된 문자열의 갯수 stn : 5
java
oracle
JDBC
HTML5
CSS
꺼내고 난 후  문자열의 갯수 stn : 0

rlqhswkfyguddmf rorcpfh aksemfdjtj cnlrkqgodi gkf Eoe

Wrapper

기본자료형을 객체로 감싸주는 역할을 해주는 클래스이다.

오토박싱

기본자료형을 Wrapper클래스로 변환해주는 것을 말한다. 자동으로 된다.

오토언박싱

Wrapper클래스를 기본자료형으로 자동으로 변환해준다.

캘린더

추상메소드이기 때문에 캘린더를 상속받은 GragorianCalender를 이용해 객체를 생성

(int year, int month, int dayofMonth, 시간분초); 인트로 넣어서 오버로딩해서 사용하면 됨.

package com.kh.part01_string.conroller;

import java.util.StringTokenizer;

public class StringTestManager {
	public void stringTest() {
		String s1 = "java";
		String s2 = "java";
		String s3 = new String("java");
		
		
		//
		System.out.println("s1과 s2가 주소가 같은지 비고 : " + (s1 == s2));
		
		//문자열 저장소의 주소와 객체가 생성된 주소는 다르기 때문에 s1과 s3의 주소가 다르다.
		System.out.println("s1과 s3가 주소가 같은지 비고 : " + (s1 == s3));
		
		
		System.out.println(s1);
		System.out.println(s2);
		System.out.println(s3);
		
		
		//값을 비교하기 위해 String클래스는 Object클래스의 equals()메소드를 오버라이딩 해 놓았다.
		//equals를 이용하여 비교하면 문자열의 값이 같은 경우 true를 반환한다.
		System.out.println("s1과 s2가 주소가 같은지 비고 : " + (s1.equals(s2)));
		System.out.println("s1과 s3가 주소가 같은지 비고 : " + (s1.equals(s3)));
		
		
		//hashcode도 오버라이딩 해 놓아서
		//같은 값을 가지면 같은 hashcode를 반환하게 overriding 되어 있다.
		System.out.println("s1의 hashcode : " + s1.hashCode());
		System.out.println("s2의 hashcode : " + s2.hashCode());
		System.out.println("s3의 hashcode : " + s3.hashCode());
		
		
		s2 += "oracle";
		
		System.out.println("s1과 s2의 주소가 같은지 : " + s1 == s2);
		
		System.out.println("s1의 hashcode : " + s1.hashCode());
		System.out.println("s2의 hashcode : " + s2.hashCode());
		System.out.println("s3의 hashcode : " + s3.hashCode());
	}
	
	public void StringBuilderTest() {
		//StringBuilder 클래스는 문자열을 저장하기 위한 클래스이다.
		StringBuilder sb = new StringBuilder("java");
		
		System.out.println("sb의 값 : " + sb);
		System.out.println("sb의 hashCode : " + sb.hashCode());
		
		sb.append("ldfdj").append("dkljfsli");
		//sb.append("oracle").append("html");
		System.out.println("sb의 값 : " + sb);
		System.out.println("sb의 hashCode : " + sb.hashCode());
	}
	
	public void splitTest() {
		String str = "java, oracle, JDBC, HTML5, CSS";
		String[] split = str.split(",");
		
		System.out.println("분리된 문자열의 갯수는 : " + split.length);
		
//		for(int i = 0; i < split.length; i++) {
//			System.out.println(split[i]);
//		}
		
		
		for(String s : split) {
			System.out.println(s);
		}
		
		
		
		StringTokenizer stn = new StringTokenizer(str, ", ");
		int count = stn.countTokens();
		
		
//		while() {
//			System.out.println(stn.hasMoreTokens());
//		}
//		
//		System.out.println(stn.countTokens());
		
		
		
		
		
//		StringTokenizer stn1 = new StringTokenizer(str, ", ");
//		
		while(stn.hasMoreTokens()) {
			System.out.println(stn.nextToken());
		}
		
		System.out.println(stn.countTokens());
		
	}
	
	
	
	
	
	
	
	
	
	
}
package com.kh.part01_string.run;

import com.kh.part01_string.conroller.StringTestManager;

public class Run {

	public static void main(String[] args) {
		StringTestManager st = new StringTestManager();
//		st.stringTest();
//		st.StringBuilderTest();
		st.splitTest();
		
	}

}
package com.kh.part02_wrapper.controller;

public class WrapperTestManager {
	
	public void boxingTest() {
		//기본 자료형을 객체로 변환하는 것을 boxing한다라고 하며
		//객체를 기본자료형으로 변환하는 것을 unboxing이라고 한다.
		
		Integer num1 = new Integer(3);
		
		Integer num2 = 3; //오토박싱(autoboxing) 처리됨
		
		
		int num3 = num1; //오토언박싱(auto unboxing) 처리됨
		
		Integer num4 = 4;
		
		
		
	}
	
	public void pasingTest() {
		//문자열(String) 타입의 자료형을 기본자료형으로 변환하는 것을 parsing한다고 함
		
		byte b = Byte.parseByte("1");
		short s = Short.parseShort("2");
		int i = Integer.parseInt("4");
		long l = Long.parseLong("8");
		float f = Float.parseFloat("0.4");
		double d = Double.parseDouble("0.8");
		boolean bl = Boolean.parseBoolean("true");
		
		char c = "abc".charAt(0);
				
		System.out.println(i);
		
	}
	
	
	public void parsingTest() {
		byte b = Byte.parseByte("2");
		int i = Integer.parseInt("3");
		
	}
	
	public void valueOfTest() {
		//기본 자료형을 문자열 개체로 변환
		//valueOf()는 기본 자료형 값을 래퍼클래스 타입의 객체로 변경해주는 메소드이고
		//해당하는 래퍼클래스별로 toString() 메소드로 스트링으로 변환해준다.
		
		String b = Byte.valueOf((byte) 1).toString();
		String s = Short.valueOf((short) 2).toString();
		String i = Integer.valueOf(4).toString();
		String l = Long.valueOf(8l).toString();
		String f = Float.valueOf(4f).toString();
		String d = Double.valueOf(8.0).toString();
		String bl = Boolean.valueOf(true).toString();
		String c = Character.valueOf('a').toString();
		
		//String클래스의 valueOf를 쓸 수 있다.
		String str = String.valueOf(10);
		
		//문자열 합치기를 이용해서 String으로 변환할 수 있다.
		String str2 = 123 + "";
		
	}
	
	public void valueOfTest1() {
		
		String b = Byte.valueOf((byte)3).toString();
		
		
	}
	
	
	
	
	
	public void calenderTest() {
		
	}
	
	
}
package com.kh.part02_wrapper.run;

import com.kh.part02_wrapper.controller.WrapperTestManager;

public class Run {

	public static void main(String[] args) {
		WrapperTestManager test = new WrapperTestManager();
		test.boxingTest();

	}

}
package com.kh.part03_date.controller;

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

public class DateTestManager {

	public void testDate() {
		
		//Date 클래스는 기본생성자와 long형 자료형 값을 매개변수로 받는 두 개의 생성자 외에는
		//Deprecated되어 있다.
		
		//default Constructor는 현재 시간에 대한 정보를 가지고 객체를 생성한다.
		Date today = new Date();
		
		System.out.println(today);
		
		//1970년 1월 1일 0시 0분 0초 이후로 지난 시간을 millisecond 단위의 시간으로 반환한다.
		System.out.println(today.getTime());
		
		
		//Date(long date) 사용하는 방법
		Date time = new Date(1585212130863L);
		
		System.out.println(time);
		
		
		
		
		
	}
	
	public void testCalandar() {
		
		//Calendar 클래스는 추상클래스이다.
		//=> 직접 객체를 생성하지 못한다.
		//1. getInstance() 메소드를 호출해서 객체를 생성하는 방법
		Calendar c = Calendar.getInstance();
		System.out.println(c);
		
		
		//2. 후손클래스를 이용하여 객체를 생성하는 방법
		Calendar gc = new GregorianCalendar();
		
		System.out.println(gc);
		
		System.out.println(Calendar.YEAR);
		System.out.println(c.get(1));
		System.out.println(c.get(Calendar.YEAR));
		
		
		
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH) + 1;
		int date = c.get(Calendar.DATE);
		int amPm = c.get(Calendar.AM_PM);
		int hour = c.get(Calendar.HOUR);
		int min = c.get(Calendar.MINUTE);
		int sec = c.get(Calendar.SECOND);
		
		
		System.out.println(year);
		System.out.println(month);
		System.out.println(date);
		System.out.println(amPm);
		System.out.println(hour);
		System.out.println(min);
		System.out.println(sec);
		
		//오전은 0, 오후는 1
		String sAmPm = (amPm == Calendar.AM)? "오전" : "오후";
		System.out.println(year + "년 " + month + "월 " + date + "일 " + sAmPm + " " + 
		hour + "시 " + min + "분 " + sec + "초");
		
		
	}
	
	public void testDateFormat() {
		//현재 날짜가 아닌 특정한 날짜값을 입력하여 객체를 생성하는 생성자 사용
		int year = 2020;
		int month = 8;		//0부터 시작
		int day = 18;
		int hour = 15;
		int min = 20;
		int sec = 0;
		
		//이부분 어렵고 중요하니까 코테에 자주 물어봄 중요!
		Calendar c = new GregorianCalendar(year, month, day, hour, min, sec);
		long time = c.getTimeInMillis();
		Date date = new Date(time);
		
		System.out.println(date);
		
		//simple
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd E요일 hh시 mm분 ss초");
		String fmtToday = sdf.format(date);
		
		System.out.println(fmtToday);
		
	}
	
	
	
	
}
package com.kh.part03_date.run;

import com.kh.part03_date.controller.DateTestManager;

public class Run {

	public static void main(String[] args) {
		DateTestManager dm = new DateTestManager();
//		dm.testDate();
//		dm.testCalandar();
		dm.testDateFormat();

	}

}
반응형

'Programming > Java' 카테고리의 다른 글

[Java] IO(입출력)  (0) 2022.03.07
[Java] Exception(예외처리)  (0) 2022.03.07
[Java] 다형성  (0) 2022.03.07
[Java] 상속(Ingerit)  (0) 2022.03.07
[Java] 배열  (0) 2022.03.07

댓글