JAVA 17일차(221115)

점햠미·2022년 11월 15일
0

JATBAP'S JAVA

목록 보기
17/22
post-thumbnail

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

클래스 Person은 이름을 저장하는 필드 구성
클래스 Person은 상위 클래스 Object의 메소드 equals()를 오버라이딩하여 
이름이 같으면 true를 반환하는 메소드 구현
다음과 같은 소스로 클래스 Person을 점검

Person p1 = new Person("홍길동");
System.out.println(p1.equals(new Person("홍길동")));
System.out.println(p1.equals(new Person("최명태")));
/*
클래스 Person은 이름을 저장하는 필드 구성
클래스 Person은 상위 클래스 Object의 메소드 equals()를 오버라이딩하여 
이름이 같으면 true를 반환하는 메소드 구현
다음과 같은 소스로 클래스 Person을 점검
*/
class Person{
	private String name;
	public Person(String name) {
		this.name = name;
	}
	
	public boolean equals(Object obj) {
		if(obj instanceof Person) {
			if(this.name == ((Person)obj).name)
				return true;
		}
		return false;
	}
}
public class EqualsPerson {
	public static void main(String[] args) {
		Person p1 = new Person("홍길동");
		System.out.println(p1.equals(new Person("홍길동")));
		System.out.println(p1.equals(new Person("최명태")));
	}
}

그냥... equals 했던거 보고 따라했어요 잘모르겠어요..

2. 아래를 참고하여, 메소드 equals()와 연산자 == 의 차이를 비교 설명하시오.(필수) ⭐️

	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));
		
		if(s1 == s2)
			System.out.println("s1, s2 참조 대상 같다.");
		else
			System.out.println("s1, s2 참조 대상 다르다. ");
		
		if(s2 == s3)
			System.out.println("s2, s3 참조 대상 같다.");
		else
			System.out.println("s2, s3 참조 대상 다르다. ");
	
		if(s1.equals(s2))
			System.out.println("s1, s2 내용 동일하다.");
		else
			System.out.println("s1, s2 내용 다르다.");
		
		if(s2.equals(s3))
			System.out.println("s2, s3 내용 동일하다.");
		else
			System.out.println("s2, s3 내용 다르다.");

==은 주소값을 비교하는 것.
equals()는 안에 내용을 비교하는 것.
그래서 s1 == s2는 내용은 같지만 주소값은 각각 다르기 때문에 false가 나오고 s1.equals(s2)는 true가 나옴.

3. 아래의 결과 값은 false 출력이 된다. true 가 되도록 INum을짜시오.

  INum[] ar1 = new INum[3];
  INum[] ar2 = new INum[3];

  ar1[0] = new INum(1); ar2[0] = new INum(1);
  ar1[1] = new INum(2); ar2[1] = new INum(2);
  ar1[2] = new INum(3); ar2[2] = new INum(3);

  System.out.println(Arrays.equals(ar1, ar2));
import java.util.Arrays;

class INum{
	int num;
	public INum(int num) {
		this.num = num;
	}
	
	public boolean equals(Object obj) {
		
		if(obj instanceof INum) {
			if(this.num == ((INum)obj).num)
				return true;
		}
		return false;
	}
}
public class EqualsTest {
	public static void main(String[] args) {
		INum[] ar1 = new INum[3];
		INum[] ar2 = new INum[3];

		ar1[0] = new INum(1); ar2[0] = new INum(1);
		ar1[1] = new INum(2); ar2[1] = new INum(2);
		ar1[2] = new INum(3); ar2[2] = new INum(3);

		System.out.println(Arrays.equals(ar1, ar2));
	}
}

4. 지네릭(Generic)이란?



출처 : https://seeminglyjs.tistory.com/184

5.Generic 이전의 코드의 문제 상황들을 예를 들어 설명하시오.



6. 아래가 돌아 가도록 DBox를 완성 하시오.

public static void main(String[] args) {
   DBox<String, Integer> box = new DBox<String, Integer>();
   box.set("Apple", 25);
   System.out.println(box);
}
class DBox<R,L>{
	private R right;
	private L left;
	
	public void set(R right, L left) {
		this.right = right;
		this.left = left;
	}
	
	@Override
	public String toString() {
		return right + "&" + left;
	}
	
}
public class DBoxTest {
	public static void main(String[] args) {
		DBox<String, Integer> box = new DBox<String, Integer>();
		box.set("Apple", 25);
		System.out.println(box);
	}
}
profile
인생 망함 개조빱임

0개의 댓글