개발공부 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
}
}