JAVA) JAVA는 힘순찐 Object Class에 대해서

백준우·2022년 12월 29일
0

Java & Spring

목록 보기
6/6
post-thumbnail
post-custom-banner

1. JAVA 객체 메소드

  1. JAVA 객체 메소드에 대해서
  2. 객체의 종류
    2.1 getClass()
    2.2 hashCode()
    2.3 toString()
    2.4 equals()
    2.5 clone()


<출처 - https://kephilab.tistory.com/92 >

들어가면서

  • Java를하면서 JS처럼 내장메소드가 있는지 궁금해졌다.
  • 학습을 하던중 JAVA에 Object Class라는걸 알게 되었고 내장메서드랑 비슷한 역할을 하는것으로 보였다.

1. JAVA 객체메소드에 대해서

  1. 객체메소드란?
    • Java Object는 Java의 모든 클래스에 대한 상위클래스다.
    • Object클래스의 모든 메서드는 모든 하위클래스와 배열에서 사용할 수 있습니다.
    • Object클래스는 객체에 대해 다양한 작업을 수행하는 다양한 메서드를 제공합니다.

2. 객체의 종류

2.1 getClass()

  • Java 개체 getClass() 메서드는 개체의 클래스 이름을 반환합니다.
  • getClass()는 매개변수를 사용하지 않는다.
  • 메서드를 호출하면 개체의 클래스를 반환한다.
    object.getClass() // getClass()쓰는 방법
  • 예제코드
    public class HelloJava {
    		public static void main(String[] args) {
    			GetClassMethod getClass = new GetClassMethod();
    			System.out.println(getClass.getClass()); // class ch01.GetClassMethod
    		}
    }

2.2 hashCode()

  • Java 개체 hashCode() 메서드는 개체와 관련된 해시 코드 값을 반환한다.
  • hashCode()메서드는 매개 변수를 사용하지 않습니다.
  • 객체의 해시 코드 값을 반환합니다.
     object.hashCode() // hashCode() 사용법
  • 예제코드
     public class HelloJava {
         public static void main(String[] args) {
             GetClassMethod getHash = new GetClassMethod();
             System.out.println(getHash.hashCode()); // 1588970020
         }
     }

2.3 toString()

  • 메서드 는 toString()개체를 문자열로 변환하고 반환합니다.
  • toString()메서드는 매개 변수를 사용하지 않습니다.
  • 객체의 텍스트 표현을 반환합니다.
    object.toString() // toString() 사용법
  • 예제코드
      public class HelloJava {
         public static void main(String[] args) {
             GetClassMethod toString = new GetClassMethod();
             System.out.println(toString.toString()); // ch01.GetClassMethod@5eb5c224
         }
     }

2.4 equals()

  • equals()메서드는 두 개체가 같은지 여부를 확인합니다.

  • equals()메서드는 단일 매개 변수를 사용합니다. ( obj - 현재 객체와 비교할 객체 )

  • 두개체가 같을경우 true / 다를 경우 false

    obj1.equals(obj2) // equals() 사용법
  • 예제코드

    public class HelloJava {
    	public static void main(String[] args) {
    		GetClassMethod equal1 = new GetClassMethod();
    		GetClassMethod equal2 = new GetClassMethod();
    
    		System.out.println(equal1.equals(equal2)); // false
    		GetClassMethod equal3 = equal1; 
    		System.out.println(equal1.equals(equal3)); // true
    	}
    }

TIP) 비교연산자 "==" , equals() 에대해

  • == : 주솟값을 비교합니다.
  • equals() : 주솟값이 아닌 객체끼리 내용을 비교합니다.
		String str1 = "abc";
        String str2 = str1;
        String str3 = new String("abc");
        // == 연산자는 주소를 비교합니다.
        System.out.println(str1 == str2); // true
        // str2 에 st1 값을 넣었으므로 주소를 같이 공유합니다.
        System.out.println(str1 == str3); // false
        // str1 과 str3는 각각 생성 되었으므로 주소가 다릅니다.
        // equals() 는 내용을 비교합니다.
        System.out.println(str1.equals(str2)); // ture
        System.out.println(str1.equals(str3)); // true
        // 내용을 비교하기떄문에 abc 내용이 같으므로 true 가 반환됩니다.

2.5 clone()

  • clone() 메서드는 개체의 얕은 복사본을 만듭니다.

  • clone()메서드는 매개 변수를 사용하지 않습니다.

  • 객체의 복사본을 반환

  • clone은 얕은 복사로써 원본을 변경하면 다른 복사된 객체에도 영향을 끼친다.

    object.clone() // clone() 사용법
  • 예제코드

    class Main implements Cloneable {
    
    // declare variables
    String name;
    int version;
    public static void main(String[] args) {
    
            // create an object of Main class
            Main obj1 = new Main();
    
            // initialize name and version using obj1
            obj1.name = "Java";
            obj1.version = 14;
    
            // print variable
            System.out.println(obj1.name);       // Java
            System.out.println(obj1.version);    // 14
    
            try {
    
              // create clone of obj1
              Main obj2 = (Main)obj1.clone();
    
              // print the variables using obj2
              System.out.println(obj2.name);      // Java
              System.out.println(obj2.version);   // 14
            }
            catch (Exception e) {
              System.out.println(e);
            }
    
    	}
    }

TIP) 깊은복사 얕은 복사

  • 얕은 복사는 저장된 객체의 주솟값을 복사해오는 것이고
  • 깊은 복사는 저장된 객체의 값을 복사하여 새로운 객체를 형성하는것으로 다른 주솟값을 가진다.

마치며 ...

  • JAVA에 상당히 유용한 Object클래스를 확인 할 수 있었다.

참고

profile
이게 되네?
post-custom-banner

0개의 댓글