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 |