개발공부 2023 ~03~13

Object, String 메서드

주우동 2023. 4. 18. 21:55

object 메서드

object 1

package javajungsuck;

public class B5_Object {

	public static void main(String[] args) {

		//모든 메서드의 최고조상 
		//11개의 메서드 가지고 있음 iv,cv는 없음
		//public class getClass(); 메서드 객체의 정보를 반환하는 객체를 생성함
		Aa2 a = new Aa2();
		System.out.println(a.getClass());//class javajungsuck.Aa2
		
		
		//equals는 자기자신의 객체와 다른 객체를 비교해서 같으면 true, 틀리면 false라고 나온다.
		//equals(object obj)
	}

}

class Aa2{
	int no = 1;
	String name = "강감찬";
	int amount = 100000;
}

object 2

package javajungsuck;

import java.util.Objects;

public class B5_Object1 {

	public static void main(String[] args) {
		//같은 값의 객체는 같은 객체로 취급하고 싶다.
		Value a = new Value(10);
		Value b = new Value(10);
		
		
		System.out.println(a.equals(b));// false가 나온다.
		//Value 메소드에서 equals를 재정의한후에 다시 실행한 결과 : true
		//형변환 하기 전에는 항상 instanceof를 써서 확인한 후 형변환을 해줘야한다.
		//hashcode도 바꿔줘야한다.
		/*
		 *  equals() 메서드를 재정의하면 해당 클래스의 hashCode() 메서드도 재정의해야 한다.. 
		 *  그 이유는 equals() 메서드에서 두 객체가 같다고 판단되면,
		 *   두 객체의 hashCode() 값도 같아야 하기 때문이다.
		 */
		
		System.out.println(a.hashCode());//41
		System.out.println(b.hashCode());//41
	
	}

}

class Value{
	int a;
	Value(int a){
		this.a = a;
	}
	//equals 오버라이딩 
	//equals 오버라이딩을 하면 hashcode도 재정의 해줘야한다,
	//이런식으로 멤버 변수를 넣어준다,
	public int hashCode() {
		return Objects.hash(a);
	}
	public boolean equals(Object obj) {
		//instanceof로 조상과 부모관계인지 확인후에 false
		if (!(obj instanceof Value)) { //부모와 조상의 관계가 아니면 !를 반환한다.
			return false;
		}
		Value v = (Value)obj; //Value 객체를 생성한후 obj객체를 형변환해서 집어넣어준다.
		return this.a == v.a;
	}
}

String메서드

String메서드1

package javajungsuck;

public class B6_String1 {

	public static void main(String[] args) {
		//String 클래스 사용은 2번보다 1번으로 사용해야한다,
		//2번 3개의 String이 생성된다.
		String a = new String("");
		String a1 = new String("");
		String a2 = new String("");
		
		//1번  //공간의 낭비가 없다.
		String b = "";
		String b1 = "";
		String b2 = "";
		
		//문자열의 종류 (String)
		//1. String(String s) 새로운 스트링 객체 생성
		String str = new String("str");
		
		//2. String(char[] value)  문자 배열 
		char[] c = {'s','3','b'};
		String str1 = new String(c);
		
		//3. String(StringBuffer buf) 스트링버퍼
		StringBuffer buf = new StringBuffer();
		String str2 = new String(buf);
		
		//4.String charAt(int index) 몇번째글자내용알기
		String s = "asdfasdf";
		char ch = s.charAt(2);
		char ch1 = s.charAt(1);
		char ch2 = s.charAt(5);
		System.out.println(ch);//d
		System.out.println(ch1);//s
		System.out.println(ch2);//s
		
		//5. int compareTo(String str) 문자열 두 값비교에서 어디가 더큰지 (정렬에 사용)
		int a4 = "aaa".compareTo("aaa"); //값이 같다 -> 0
		int a5 = "aaa".compareTo("bbb"); //왼쪽이 작다 -> -1
		int a6 = "bbb".compareTo("aaa"); //오른쪽이 작다 -> 1
		
		//6. concat(String str) 문자를 뒤에 이어 붙인다
		String str3 = "Hello";
		String str4 = str3.concat("World");
		System.out.println(str4);//HelloWorld
		
		//7.split 문자열을 주어진 기준으로 나눈다. 
		String str5 ="dog,cat,tutle,bird" ;
		String[] str6 = str5.split(",");
		for(String f : str6) {
			System.out.print(f+"\t"); //dog	cat	tutle	bird	
			
		}
		System.out.println("");
		//8.toUpperCase toLowerCase 전부대문자로 전부 소문자로
		String str7 = "korea";
		System.out.println(str7.toUpperCase()); //KOREA
		System.out.println(str7.toLowerCase()); //korea
		
		
		//9. valueOf 기본자료형과 객체를 문자열로 바꾼다 String 참조변수 = String.valueOf();
		//String.valueOf 
		//Inteager.valueOf 등 다양한자료형이있다.
		
		boolean f1 = true;
		int f2 = 10;
		double f3 = 3.0;
		String str8 = String.valueOf(f1) ; //숫자를 문자열로 변환1
		String str9 = String.valueOf(f2) ;
		String str10 = String.valueOf(f3) ;
		String st1 = 100+""; //이런방식도 된다 ! 숫자를 문자열로 변환2
		System.out.println(str10); //"3.0"
		System.out.println(st1); //"100"
		int st2 = Integer.valueOf("100");// 문자열을 10으로 변환1
		int st3 = Integer.parseInt("100"); //문자열을 10으로 변환2
		System.out.println(st2); //100
		
		
		//10. join 주어진 기준으로 문자열 합치기
		String str11 = "do1,do2,do3,do4,do5";
		String[] str12 = str11.split(",");
		String str13 = String.join("-",str12);
		System.out.println(str13); //do1-do2-do3-do4-do5
	}

}