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
'JAVA' 카테고리의 다른 글
JAVA Calendar (0) | 2022.07.26 |
---|---|
JAVA 생성자 (0) | 2022.07.23 |
JAVA 인터페이스 (0) | 2022.07.19 |
JAVA instanceof 연산자 (0) | 2022.07.18 |
JAVA (메서드)오버라이딩 (0) | 2022.07.18 |