다연이네

[days18] java.lang 패키지와 유용한 클래스, String의 다양한 메소드 본문

Java

[days18] java.lang 패키지와 유용한 클래스, String의 다양한 메소드

 다연  2020. 10. 18. 15:01
반응형

Class Object.getClass() : 객체 자신의 클래스 정보를 담고있는 Class 인스턴스를 반환하는 메소드

 

1. Class cls = v1.getClass();

2. equals 오버라이딩

3. toString 오버라이딩

4. Clone 오버라이딩 (주의: implements Cloneable 삽입 필수)

package review;

public class Review06 {

	public static void main(String[] args) {
		Value v1 = new Value(10);
		Value v2 = new Value(10);

		Class cls = v1.getClass();
		System.out.println(cls.getName()); //review.Value 패키지명.클래스명

		System.out.println(v1.equals(v2));

		Point p1 = new Point(1,2);
		System.out.println(p1.toString());
		
		try {
			Point p2 = p1.clone();
			System.out.println(p2.toString());
			
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
		}
	}

}

class Point implements Cloneable{
	int x, y;
	
	public Point() {}
	public Point(int x, int y) {
		this.x=x;
		this.y=y;
	}
	@Override
	public Point clone() throws CloneNotSupportedException {
		return (Point)super.clone();
	}
	@Override
	public String toString() {
		return String.format("x=%d, y=%d", this.x, this.y);
	}
	

}

class Value{
	int value;
	public Value() {}
	Value(int value) {
		this.value = value;
	}

	//equals 오버라이딩 - 값만 같으면 true
	@Override
	public boolean equals(Object obj) {
		Value v;
		if(obj instanceof Value && obj!=null) {
			v=(Value)obj; //다운캐스팅
			return this.value == v.value;
		}
		return false;
	}


}

 String의 다양한 메소드

 

1. endsWith(), startswith() 접미사/접두사 확인

String directory = "C:\\Class\\JavaClass\\JavaPro\\src\\days17\\";  

		System.out.println(directory.endsWith("\\")); //true
		System.out.println(directory.startsWith("\\")); //false

2.  valueOf()   타입들 -> String 

	int i = 100;
		String.valueOf(i); //"100"		int -> String
		String.valueOf(true); //"true" boolean -> String
		String.valueOf('c'); //"c"			char -> String

3. join

String [] namez = {"프랭키","그레이스","솔"};
		String result = String.join("/", namez);
		System.out.println(result);

4. name.compareTo(anotherString) 문자열 비교

System.out.println("홍길동".compareTo("홍길동")); //0 두 문자열이 같은 경우
System.out.println("kbs".compareTo("kcs")); //-1 b와c 98 - 99, 뒤에 비교할 필요 없이 그냥 그 값 돌려
System.out.println("kbs".compareTo("kas")); //1 b와 a 98-97
System.out.println("kbs".compareTo("kxs")); //-22 b와x 

5.  indexOf() 문자열 속에 특정 문자열이 있는지 인덱스 값을 반환

String target = "안녕하세요. 홍길동 입니다. 반장 홍길동 입니다.";
		int inx = target.indexOf("홍길동"); // 숫자 반환
		System.out.println(inx);
		//뒤에있는 홍길동을 찾으려면
		int fromIndex = inx+1;
		int idx = target.indexOf("홍길동",fromIndex);
		System.out.println(idx);

6. replace(), contain()

package days18;

public class Ex06 {

	public static void main(String[] args) {
		
		String data = "hxllo world ~ hello world~";
		// h-> T 변경
		data = data.replace('h', 'T');
		System.out.println(data); 
        
		//world -> XXX 문자열 변경
		data = data.replace("world", "XXX");
		System.out.println(data);
        
         //첫번째 XXX 바뀜
		data = data.replaceFirst("XXX", "엑스");
		System.out.println(data);
		
		
		//data 문자열 안에 "엑스" 문자열을 가지고 있니? 확인 작업
		boolean a = data.contains("엑스"); // boolean형
		System.out.println(a);

	}

}

7. StringBuffer클래스와 StringBuilder클래스 (문자열을 추가, 삭제, 삽입 등 문자열을 변화시키는 일을 할때)

package review;

public class Review10 {

	public static void main(String[] args) {
		StringBuffer sb = new StringBuffer("abc");
		sb.append("def"); //문자열 끝에 추가
		System.out.println(sb); //abcdef
		
		char one =sb.charAt(0);
		System.out.println(one); //'a'
		
		sb.delete(3, 5); //abcdef에서 de삭제
		System.out.println(sb); //abcf
		sb.insert(3, "de");
		System.out.println(sb); //abcdef
		
		//StringBuffer: 동기화o
		//StringBuilder: 동기화x
		//속도: StringBuilder > StringBuffer 
		
	}

}

8. StringTokenizer 클래스 (==split 함수)

package days18;

import java.util.Arrays;
import java.util.StringTokenizer;

public class Ex09 {

	public static void main(String[] args) {


		String data = "a,b,c,d";
		
		StringTokenizer st = new StringTokenizer(data, ",");// 위 문자열(data)을 콤마를 구분자로 잘라서 가지고 있는 객체
		
		while (st.hasMoreTokens()) { //잘라낸 토큰 가지고 있니? 4개 있으니까 true  3 -> 2 -> 1 -> 0(false, 와일 빠져나감)
			System.out.println(st.nextToken()); // 그럼 그 안에 토큰 가져가겠다 a -> b -> c -> d
		}

	}

}

 

반응형
Comments