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

 

openclose