본문 바로가기

bitcamp/JAVA

Object 클래스_연습문제

1. String 객체 프로그램을 이용하여 equals 메소드와 연산자 ==의 차이를 비교 설명하시오. (필수) 

· s1과 s2는 서로 다른 인스턴스를 생성하고, s3은 s2의 인스턴스를 참조한다.

 연산자 == 는 같은 인스턴스를 참조하는지 비교하며,
 equals 메소드는 부모클래스인 Object의 함수로써 단순히 문자열이 같은지 내용을 비교한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class String {
    private String str;
    
    String(String str){
        this.str = str;
    }
 
    @Override
    public boolean equals(Object obj) {
        if(this.str == ((String)obj).str)
            return true;
        else
            return false;    
    }
 }
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
 class Stringmain {
    public static void main(String[] args) {
        String s1 = new String("java");
        String s2 = new String("java");
        String s3 = s2;
 
        System.out.println(s1 == s2);
        System.out.println(s1.equals(s2));
        System.out.println(s2 == s3);
        System.out.println(s2.equals(s3));
    }
 }
cs

 

 

2. 다음 main()이 실행되면 아래 예시와 같이 출력되도록 MyPoint 클래스를 작성하라. 

· 참고

 

· 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 class MyPoint {
    private int x;
    private int y;
    
    public MyPoint(int x, int y){
        this.x = x;
        this.y = y;
    }
    @Override    
    public String toString() {
        return "Point(" + x + "," + y + ")"
    }
    @Override
    public boolean equals(Object obj) {
        if(this.x == ((MyPoint)obj).x && this.y == ((MyPoint)obj).y)
            return true;
        else
            return false;        
    }    
 }
cs

 

 

3. 중심을 나타내는 정수 x, y와 반지름 radius 필드를 가지는 Circle 클래스를 작성하고자 한다.

· 생성자는 3개의 인자(x, y, raidus)를 받아 해당 필드를 초기화하고, equals() 메소드는 두 개의 Circle 객체의 중심이 같으면

  같은 것으로 판별하도록 한다.

· 참고

 

· 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 class Circle {
    private int x;
    private int y;
    private int radius;
    
    Circle(int x, int y, int radius){
        this.x = x;
        this.y = y;
        this.radius = radius;
    }
    @Override
    public String toString() {
        return ("Circle(" + x + "," + y + ")반지름" + radius);
    }
 
    @Override
    public boolean equals(Object obj) {
        if((this.x == ((Circle)obj).x) && (this.y == ((Circle)obj).y))
            return true;
        else
            return false;
    }
 }
cs

 

 

4. 다음 조건을 만족하는 클래스 Person을 구현하여 테스트하는 프로그램을 작성하시오. (필수)

· 참고

 

· 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 class Person {
    private String name;
    
    public Person(String name) {
        this.name = name;
    }
    
    @Override
    public boolean equals(Object obj) {
        if(this.name == ((Person)obj).name)
            return true;
        else
            return false;
    }
 }
 
cs

 

'bitcamp > JAVA' 카테고리의 다른 글

자바의 기본 class_연습문제  (0) 2021.01.25
자바의 기본 class  (0) 2021.01.25
JVM 메모리모델과 Object 클래스  (0) 2021.01.25
예외처리  (0) 2021.01.21
interface와 추상클래스_연습문제  (0) 2021.01.20