JAVA

JAVA java.lang 패키지

짱코딩러 2022. 7. 21. 23:43

equals()

1.오버라이딩 해주기

class Value{
	int value;
	
	Value(int value){
		this.value = value;
	}
    
    //오버라이딩
	public boolean equals(Object obj) {
//		참조변수 형변환 전에 반드시 instanceof로 확인하기!
		if(!(obj instanceof Value)) return false;

		Value v = (Value)obj;	//obj를 value(자식클래스)로 형변환. 
								//obj(조상)로 value(자식이 가진 속성)를 사용하기 위해.
		return this.value==v.value;
	}
}

2.object (자식클래스로)형변환 해주기

3.값 비교(리턴이나 출력)

 

toString()

오버라이딩 해주기(문자열을 더해줘서 객체->문자열로 변환)

public String toString() {
	return 원하는 문자열 적어주기
}

 

hashCode()

equals()를 오버라이딩 했으면(iv사용하게 했으면) hashCode()도 오버라이딩 해야됨.(iv사용하도록 해줘야됨.)

import java.util.Objects;

class CardA {
	String kind;
	int number;
	
	CardA(){
		this("SPADE", 1);
	}
	
	//equals()를 오버라이딩 하면 hashCode도 오버라이딩 해야한다...
	public int hashCode() {
		return Objects.hash(kind, number);
	}
	
	
	CardA(String kind, int number){
		this.kind = kind;
		this.number = number;
	}


	//Object 클래스의 eqluals()를 오버라이딩
	public boolean equals(Object obj) {
		if(!(obj instanceof CardA)) return false;

		CardA c = (CardA)obj;	//obj를 value(자식클래스)로 형변환. 
								//obj(조상)로 value(자식이 가진 속성)를 사용하기 위해.
		return this.kind.equals(c.kind) && this.number==c.number;
		//kind는 String이니까 equals로 적어주자.
	}	
	
	//Object 클래스의 toString()을 오버라이딩
	public String toString() {
		return "kind : "+kind +", number : "+number;
	}

	
}
class Ex9_4 {
	public static void main(String[] args) {
		CardA c1 = new CardA();
		CardA c2 = new CardA();
		
		System.out.println(c1.equals(c2));
		
		System.out.println(c1.hashCode());	//iv가 같으므로 hashCode도 true
		System.out.println(c2.hashCode());
	}

}

 

valueOf()

문자열-> 기본형

기본형-> 문자열

문자열-> 래퍼클래스 (생성자를 써서 변경해줘도 됨.)

*래퍼클래스-> 문자열 (일때는 toString() 써주면 됨.)

join()

public class Ex9_10 {

	public static void main(String[] args) {
		int iVal = 100;
		
		//int를 String으로 변환 (두가지 방법이 있지만 그냥 문자열 더해주는게 편함)
		String strVal = iVal+"";
//		String strVal = String.valueOf(iVal);
		
		double dVal = 200.0;
		String strVal2 = dVal + "";
		
		//String을 int로 변환
		double sum = Integer.valueOf("+"+strVal) + Double.valueOf(strVal2);
		
		//많은 문자열을 결합할땐 join()을 사용하는 게 좋아요
		System.out.println(String.join("",strVal,"+",strVal2,"=")+sum);
		System.out.println(strVal+"+"+strVal2+"="+sum);
	}

}

 

StringBuffer()

substring(시작위치, 끝위치)와 같이 사용하면 StringBuffer 객체의 시작위치에서 끝위치까지의 문자를 뽑아낸다.

참조변수.append()   =>끝에 문자열 추가

.delete(from,to)   =>특정 부분 제거

.insert("삽입할문자열",삽입할인덱스번호)      =>특정 부분에 삽입

public class Ex9_12 {

	public static void main(String[] args) {
		StringBuffer sb = new StringBuffer("01");	//01인 StringBuffer 문자열 생성
		StringBuffer sb2 = sb.append(23);			//sb2로 sb끝에 문자열 23 추가
		sb.append('4').append(56);					//메서드 체이닝. 메서드를 계속 연결해서 호출함
		
		StringBuffer sb3 = sb.append(78);			//참조변수 sb3로 sb의 내용 뒤에 78추가
		sb3.append(9.0);
		
//		다 똑같이 나옴
		System.out.println("sb="+sb);
		System.out.println("sb2="+sb2);
		System.out.println("sb=3"+sb3);

		System.out.println("sb= "+sb.deleteCharAt(10)); //10번 인덱스에 있는 문자를 지움(뒤에 있는 애들은 앞으로 땡겨옴) 
		System.out.println("sb= "+sb.delete(3, 6));		//(마지막 자리 빼고) 3,4,5번째 인덱스의 문자 지움
		System.out.println("sb= "+sb.insert(3,"abc"));	//3번째 인덱스부터 abc넣음(뒤에 애들은 뒤로 밀림)
		System.out.println("sb= "+sb.replace(6, sb.length(), "END"));	//sb의 길이는 11이므로
																		//6,7,8,9,10번째 인덱스의 내용을 지우고 END 넣어줌
		System.out.println("capacity="+sb.capacity());	//배열길이
		System.out.println("length="+sb.length());		//저장된 문자의 개수
	}

}

 

wrapper클래스

기본형을 클래스로 정의한 것.(기본형을 객체로 다뤄야 할때 사용)

기본형과, wrapper는 연상할 때 컴파일러가 자동으로 바줘주므로 그냥 같다고 생각하고 사용해도 됨.(오토박싱, (오토)언박싱)

public class Ex9_14 {

	public static void main(String[] args) {
		Integer i = new Integer(100);
		Integer i2 = new Integer(100);
		
		System.out.println("i==i2 ? "+(i==i2));		//주소비교
		System.out.println("i.equals(i2) ? "+i.equals(i2));	//실제값 비교
		System.out.println("i.compareTo(i2)= "+i.compareTo(i2));	//(오른쪽 값이)같으면 0, 작으면 양수, 크면 음수 반환. (equals처럼 실제값 비교)
		System.out.println("i.toString()= "+i.toString());		//문자열로 출력 "100"
		
		System.out.println("MAX_VALUE= "+Integer.MAX_VALUE);	//int의 최대값	
		System.out.println("MIN_VALUE= "+Integer.MIN_VALUE);	//int의 최소값
		System.out.println("SIZE= "+Integer.SIZE+" bits");
		System.out.println("BYTES= "+Integer.BYTES+" bytes");
		System.out.println("TYPE= "+Integer.TYPE);				//Integer의 타입
	}

}

 

String()

변수명.indexOf("문자열")   =>찾으려는 문자열의 시작 index를 리턴

변수명.astIndexOf("문자열",0)  =>반대방향으로 찾음(뒤에서 앞으로). index도 자기가 센 숫자대로 리턴함

                                                       원하는 index(시작)위치를 적어줄 수도 있음. 없으면 -1 리턴

변수명.subString("인덱스")   =>인덱스부터 뒤의 문자열을 리턴해줌.(원하는 끝 위치를 적어줄수도 있음. 끝위치는 포함X