Object
package ch06;
class Animal {
@Override
public int hashCode() {
return super.hashCode();
}
}
public class ObjectEx01 {
public static void main(String[] args) {
Animal a = new Animal();
String d1 = "물";
String d2 = "물";
System.out.println(d1.equals(d2));
System.out.println(d1 == d2);
String d3 = new String("물");
String d4 = new String("물");
System.out.println(d3.equals(d4));
System.out.println(d3 == d4);
System.out.println(d3.getClass());
System.out.println(new ObjectEx01().getClass());
// 해쉬코드 -> 해쉬 알고리즘 = 동일한 길이의 숫자로 리턴
System.out.println(d3.hashCode());
System.out.println(d4.hashCode());
Animal a1 = new Animal();
Animal a2 = new Animal();
System.out.println(a1.hashCode());
System.out.println(a2.hashCode());
System.out.println(a1 instanceof Animal);
System.out.println(a2 instanceof Animal);
}
}
모든 클래스는 object 타입으로 묶을 수 있다. -> 다형성
Object의 주요 메소드
1. equals
object 가 가르키는 객체와 현재 객체를 비교하여 같으면 true를 리턴한다.

* == : 같은 주소공간에 있는지 보는 것
* equals : 같은 주소안에 있는지 보고 안쪽을 한번 더 본다.
d1과 d2는 같은 공간안에 있기 때문에 둘다 true 값을 리턴한다.

d3랑 d4 다른 공간에 String 값을 넣었기 때문에 equals는 공간 안까지 보기때문에 true가 나오지만
==은 주소값을 찾기 때문에 결과값이 false이다.
2. getClass
현 객체의 런타임클래스를 리턴해준다.

클래스의 경로와 이름을 리턴해준다 .

클래스의 정보를 리턴해준다.
3. 해시코드
해쉬코드 -> 해쉬 알고리즘 = 동일한 길이의 숫자로 리턴하는 것을 말한다.

위 d3와 d4는 같은 공간안에 있기 때문에 같은 해시코드가 나오지만,
Animal a1,a2는 각각 다른 공간에 값을 띄었기 때문에 결과값의 hashCode는 다른 값이 나온다.
toString
package ch06;
class Person {
String name = "홍길동";
int age = 15;
String job = "학생";
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", job=" + job + "]";
}
}
public class ObjectEx02 {
public static void main(String[] args) {
Integer num = 10;
String s = Integer.toString(num);
System.out.println(s);
Person p = new Person();
System.out.println(p.toString());
System.out.println(p);
StringBuilder sb = new StringBuilder();
sb.append("안녕");
sb.append("반가워");
System.out.println(sb.toString());
}
}

내가 원하는 것을 문자열로 바꾸도록 재정의 한다.

모든 Object는 toString 을 통해 모든 것을 문자로 바꿀 수 있다.

Java는 객체를 호출하면 자동으로 toString으로 호출할 수 있도록 만들어져있다.
둘다 같은 값이 나온다.
String Buffer
String Builder랑 같은 것
문자열을 저장하는 가변 버퍼를 가지고 있기 때문에 저장된 문자열의 수정이 가능하다. 문자열의 크기다 늘어나면 내부 버퍼 크기를 자동으로 조절할 수 있다.
동시접근이 불가능하다(String Builder는 동시접근이 가능하다.)
https://jeong-pro.tistory.com/85
JAVA String, StringBuffer, StringBuilder 차이점
String, StringBuffer, StringBuilder의 장단점 및 차이점 자바에서 String과 StringBuffer, StringBuilder의 차이점을 알아본다. 앞서 이 클래스들의 공통점은 모두다 String(문자열)을 저장하고 관리하는 클래스..
jeong-pro.tistory.com
'Java programing > 프로그래밍 언어 활용' 카테고리의 다른 글
Java - GUI (0) | 2020.04.17 |
---|---|
Java - SDK, REST API, FDMA, TDMA (0) | 2020.04.17 |
Java - 채팅만들기 (다대다 양방향 통신), 클론코딩 (0) | 2020.04.17 |
Java - 채팅만들기, 클론코딩 (0) | 2020.04.14 |
Java - 소켓통신, 내부클래스, Finally (0) | 2020.04.14 |