[Java]/Program source (java)
129 - Java 자바의 주요 클래스 : 생성자를 통해 초기값이 지정된 객체를 생성하고, equals(), 동등 연산자(==), toString(), hashCode(), getClass() 메소드를 활용해 보는 프로그램
Jelly-fish
2023. 9. 15. 16:55
/*==============================================
■■■ 자바의 주요(중요) 클래스 ■■■
- 자바에서 기본적으로 제공하는 주요 클래스들
- Object 클래스
================================================*/
class NewCar
{
private int velocity; //-- 자동차의 속도
private int wheelNum; //-- 자동차의 바퀴 개수
private String carName; //-- 자동차의 이름
// 매개변수를 3개 받는 생성자.
NewCar(int speed, String name, int wheel)
{
velocity = speed;
carName = name;
wheelNum = wheel;
}
}
public class Test129
{
public static void main(String[] args)
{
NewCar nCar1 = new NewCar(250, "벤츠", 4);
NewCar nCar2 = new NewCar(150, "아우디", 4);
// equals()
// 문자열을 비교하는 equals()
System.out.println("1-1 : " + nCar1.equals(nCar2));
System.out.println("1-2 : " + (nCar1 == nCar2));
//--==>> 1-1 : false
// 1-2 : false
// nCar1 클래스의 객체를 ☆주소값 복사하여(참조하는 객체) nCar3에 저장
// nCar1과 nCar3가 참조하는(가리키는) 곳이 동일하다!
NewCar nCar3 = nCar1; // 객체 복사 → 얕은 복사(참조형) → 주소값 복사
System.out.println("2-1 : " + nCar1.equals(nCar3));
System.out.println("2-2 : " + (nCar1 == nCar3));
//--==>> 2-1 : true
// 2-2 : true
// Object 클래스(최상위 조상 클래스)의 메소드를 사용중...
// toString()
System.out.println("3-1 : " + nCar1.toString());
System.out.println("3-2 : " + nCar2.toString());
System.out.println("3-3 : " + nCar3.toString());
//--==>> 3-1 : NewCar@15db9742 (nCar1 과 nCar3의 주소값이 동일!)
// 3-2 : NewCar@6d06d69c
// 3-3 : NewCar@15db9742 (nCar1 과 nCar3의 주소값이 동일!)
// 주소값 : 16진수 형태 (Hexadecimal)
// 서로 다른 객체임에도 불구하고, 주소값이 동일하다. 따라서 해시코드가 같다 하더라도 같은 객체가 아니다!
// hashCode()
System.out.println("4-1 : " + nCar1.hashCode());
System.out.println("4-2 : " + nCar2.hashCode());
System.out.println("4-3 : " + nCar3.hashCode());
//--==>> 4-1 : 366712642
// 4-2 : 1829164700
// 4-3 : 366712642
// 주소값 : 10진수 형태 (Decimal)
//-- 결과값을 16진수 형태로 바꾸게 되면
// 『toString()』 메소드가 반환한 결과값 확인 가능.
// getClass() - 객체가 어떤 클래스를 통해 태어났는지를 확인하는 메소드!
// getClass()
System.out.println("5-1 : " + nCar1.getClass());
System.out.println("5-2 : " + nCar2.getClass());
System.out.println("5-3 : " + nCar3.getClass());
//--==>> 5-1 : class NewCar
// 5-2 : class NewCar
// 5-3 : class NewCar
//-- 생성된 객체를 통해
// 해당 객체의 기반 설계도(클래스)를 확인할 수 있는 기능을 가진 메소드.
// clone() //-- 객체 복사
// finalize() //-- 객체 직렬화
// 기타 나머지 메소드는 스레드 처리와 관련이 있다.
}
}