본문 바로가기
JAVA

2022-10-21 java.lang패키지와 유용한 클래스(API활용법)

by HTT 2022. 10. 22.
String클래스

 

- 클래스의 비교

public class StringTest01 {
	public static void main(String[] args) {
		String str1 = "java";  //리터럴의 형태로 접근
		String str2 = "java";
		String str3 = new String("java");  //객체 생성
		String str4 = new String("java");
		if(str1==str2) {  //같다.
			System.out.println("same");
		}else {
			System.out.println("not name");
		}
		
		if(str1==str3) {
			System.out.println("same");
		}else {
			System.out.println("not name");
		}
		
		if(str3==str4) {
			System.out.println("same");
		}else {
			System.out.println("not name");
		}
	}
}

* new 연산자는 새로운 주소값을 만들기 때문에 비교했을 때 false가 뜬다.

 

- String클래스 : 자주 사용하는 메소드

public class StringTest02 {
	public static void main(String[] args) {
		String str1 = new String("java programming");
		String str2 = new String("재밌다..");
		System.out.println(str1.charAt(1));  //0,1,2,3...
		System.out.println(str1.concat(str2));  //연결
		System.out.println(str1);
		System.out.println(str2);
		System.out.println(str1.indexOf('a'));  //0부터시작
		System.out.println(str1.indexOf("합"));
		System.out.println(str1.lastIndexOf("a")); //뒤에서부터 a의
		System.out.println(str1.length());  //문자열의 길이
		System.out.println("===========================================");
		System.out.println(str1.equals("java programming"));
		System.out.println(str1.equals("Java programming"));
		
		System.out.println(str1.equalsIgnoreCase("java programming"));
		System.out.println(str1.equalsIgnoreCase("Java programming"));
		System.out.println(str1.length());
		System.out.println(str1.length());
		System.out.println("===========================================");
	}
}
public class StringTest03 {
	public static void main(String[] args) {
		String str1 = new String("Java programming");
		String str2 = new String("재밌다..");
		System.out.println(str1.startsWith("java"));  // 자바로 시작하는지
		System.out.println(str1.startsWith("test"));  // 테스트로 시작하는지
		System.out.println(str1.endsWith("java"));  // 자바로 끝나는지
		System.out.println(str1.endsWith("ing"));  // ing로 끝나는지
		System.out.println(str1.contains("ja"));  // ja가 포함하는지
		
		System.out.println(str1.toUpperCase());  // 대문자로
		System.out.println(str1.toLowerCase());  // 소문자로
		System.out.println(str1);  // 원본은 변경되지 않음
		
		System.out.println(str1.substring(5));   // start index
		System.out.println(str1.substring(5,8));  // start ~ end-1 (5~7)
		System.out.println(str1.replace('a','A')); // a를 A로 바꾸기
		System.out.println(str1);  // 원본은 변경되지 않음
	}
}

 

- String클래스 : 데이터변환과 관련된 메소드들

package api.lang;
public class StringTest04 {
	public static void main(String[] args) {
		String s = "java programming";
		String s2 = new  String("java servlet spring android");
		
		//1. String -> byte[]
		byte[] data1 = s.getBytes();
		for(int i=0; i<data1.length; i++) {
			System.out.println(data1[i]);   //ASKII값이 나옴
		}
		System.out.println();
		
		//2. String ->char[]
		char[] data2 = s.toCharArray();
		for(int i=0; i<data2.length; i++) {
			System.out.println(data2[i]);
		}
		System.out.println();
		
		//3. String ->String[]
		String[] data3 = s2.split("  ");
		for(int i=0; i<data3.length; i++) {
			System.out.println(data3[i]);
		}
		System.out.println();
		
		//4. 기본형 -> String
		//기본형을 감싸서 참조형으로 바꿔줌 (ex-Wrapper클래스가 있음 )
		int i =100;
		double d = 10.5;
		test(String.valueOf(i)); 
		test(String.valueOf(d));
		test(i+"");
		test(d+"");
	} //end메인
    
	public static void test(String data) {
		System.out.println("변환된 데이터 "+data);
	}
}

 

 

 

 

StringBuffer

 

- String은 원본이 변경되지 않는다. - 실행결과가 String객체로 생성

- StringBuffer는 원본이변경 된다(쓰레드처리o -> 무겁다).

- StringBuilder도 같은 원리(쓰레드처리x)

public class StringBufferTest {
	public static void main(String[] args) {
		 StringBuffer sb = new StringBuffer("java programming");
		 System.out.println("원본 "+sb);

		 sb.append("재밌다");  // 추가하기
		 System.out.println("원본 "+sb);
		 
		 sb.insert(2, "자바자바");  // 원하는 위치에 원하는 내용 추가하기
		 System.out.println("원본 "+sb);
		 
		 sb.delete(2, 5); // start ~ end-1
		 System.out.println("원본 "+sb);
		 
		 sb.reverse();
		 System.out.println("원본 "+sb);
	}
}

 

 

[String과 StringBuffer의 성능비교(실행시간)]

package api.lang;
public class StringStringBufferTest {

	// String객체를 만들어서 제어
	public static void stringCheck(int count) {
		// 시작 전에 시간체크 - nano초
		long start = System.nanoTime(); // -> 1/10억초
		String str = new String("java");
		for (int i = 1; i <= count; i++) {
			str = str + "java";
		}
		long end = System.nanoTime();
		long time = end-start;
		System.out.println("str = str + java");
		System.out.println("수행시간 : "+time);
		System.out.println(str);
	}
    
	// StringBuffer객체를 만들어서 제어
	public static void stringBufferCheck(int count) {
		long start = System.nanoTime(); // -> 1/10억초
		StringBuffer sb = new StringBuffer("java");
		for (int i = 1; i <= count; i++) {
			sb.append("java");
		}
		long end = System.nanoTime();
		long time = end-start;
		System.out.println("sb.append('java')");
		System.out.println("수행시간 : "+time);
		System.out.println(sb);
	}
	
	public static void main(String[] args) {;  // 실행시간 측정
		int count = 10000;
		System.out.println("실행횟수 : "+count);
		stringCheck(count);
		stringBufferCheck(count);
	}

}

댓글