API (자바 기본제공)
String : 문자열 값 수정이 불가능. 수정 시 수정된 문자열이 새로 할당되어 새 주소 넘김
wrapper : 기본자료형을 객체화
StringTokenizer : String클래스 split()메소드와 동일기능으로 각 문자열을 각 토큰에 저장
String str = "AA|BB|CC";
StringTokenizer st = new StringTokenizer(str, "|");
while(st.hasMoreToken()){
system.out.println(st.nextToken());
}
String str = "abc";
String str1 = "abc"; //리터럴로 생성 //실제 시스템 해시코드도 같게나옴 (스트링 풀로 인해서)
// jvm이 스트링풀을 검사 => 동일한 값이 있으면 그 주소값을 리턴
String str2 = new String("abc");
String str3 = new String("abc"); //생성자로 생성 //실제 시스템 해시코드는 다름 //스트링풀을 고려하지 않고 새로 만듬
System.out.println(System.identityHashCode(str1));
System.out.println(System.identityHashCode(str2)); 다른결과가 나옴
java.lang.String 클래스의 API
String str = "abc";
System.out.println(str.charAt(1));
System.out.println(str.concat("def"));
System.out.println(str.contains("a"));
String str1 = "a,b,c";
//split
String[] strArr = str1.split(",");
for(int i = 0; i < strArr.length; i++) {
System.out.println(strArr[i]);
}
for(String arr : strArr) {
System.out.println(arr);
}
//toUpperCase
System.out.println(str.toUpperCase());
//substring
System.out.println(str1.substring(2,4));
String str2 = " a b c ";
//문자열 앞뒤 공백제거 trim
System.out.println(str2.trim());
java.lang.StringBuffer와 String의 차이점 (값이 바뀌면 주소가 변경되는지여부)
String str = "반가워! ";
System.out.println("기존 str : " + str + ", 주소 : " + str.hashCode());
str += "난 String이라고해";
System.out.println("추가 후 str : " + str + ", 주소 : " + str.hashCode());
StringBuffer sbf = new StringBuffer("안녕");
System.out.println("sbf 기존 : " + sbf + ", 주소 : " + sbf.hashCode());
sbf.append("반가워");
System.out.println("sbf 추가 후 : " + sbf + ", 주소 : " + sbf.hashCode());
sbf.append(" 나는 지금").append("배가 고파 ㅠㅠ"); //메소드체이닝
System.out.println(sbf);
//insert
sbf.insert(6, "모두들 ");
System.out.println(sbf);
//delete
sbf.delete(0, 6);
System.out.println(sbf);
//reverse
sbf.reverse();
System.out.println(sbf);
Boxing / Unboxing
public static void main(String[] args) {
//Boxing (기본자료형을 객체로), UnBoxing (클래스객체를 기본자료형으로)
//autoboxing
Short i = 10;
Integer i2 = 5;
Double d = 5.0;
int pi = i2.intValue();
double pd = d.doubleValue();
//autoUnboxing
int a = i;
int b = i2;
System.out.println(a+b);
abox(a+b); //a+b는 int기본자료형인데 >> integer >> 다형성 >> Object
byte bi = Byte.valueOf("1");
String bs = Byte.valueOf(bi).toString();
int ii = Integer.valueOf("3");
ii = Integer.parseInt("3");
String is = Integer.valueOf(ii).toString();
is = ii+"";
}
public static void abox(Object obj) {
System.out.println((int)obj);
}
날짜클래스 : Date , Calendar, GregorianCalendar(윤년계산)
public static void main(String[] args) {
// Date time = new Date();
// System.out.println(time);
//
// Date time2 = new Date(0L);
// System.out.println(time2);
//
// String time3 = new Date(1500000000000L).toGMTString();
// System.out.println(time3);
Date today = new Date();
System.out.println(today);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/mm/dd");
System.out.println(sdf.format(today));
//SimpleDateFormat("yyyy/mm/dd").format(new Date());
System.out.println("--------------캘린더-------------");
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
// calendar.set(2021, 8-1, 12);
// System.out.println(calendar);
int year = calendar.get(1);
int month = calendar.get(Calendar.MONTH)+1;
int date = calendar.get(Calendar.DATE);
int hour = calendar.get(Calendar.HOUR);
int min = calendar.get(Calendar.MINUTE);
System.out.println(year+"-"+month+"-"+date+"-"+hour+"-"+min);
System.out.println("------------그레고리안-------------");//윤년계산
GregorianCalendar gc = new GregorianCalendar();
System.out.println(gc.getTime());
System.out.println("year : " + gc.get(Calendar.YEAR));
System.out.println("Month : " + (gc.get(Calendar.MONTH)+1));
gc.set(2017, 10-1,22);
System.out.println(gc.getTime());
}