1. 래퍼 클래스에 대하여 설명하시오.
📌래퍼 클래스(wrapper class)
- 기본 자료타입(primitive type)을 객체로 다루기 위해 사용하는 클래스
- 기본 타입의 값을 내부에 두고 포장하기 때문에 포장 객체라고도 한다.
- 래퍼 클래스로 감싸고 있는 기본 타입 값은 외부에서 변경할 수 없다. (변경하고 싶으면 새로운 포장 객체를 생성해야 함)
기본타입(primitive type) | 래퍼 클래스(wrapper class) |
---|
byte | Byte |
char | Character |
int | Integer |
float | Float |
double | Double |
boolean | Boolean |
long | Long |
short | Short |
2. 박싱과 언박싱에 대하여 설명하시오.
📌 박싱(Boxing)
- 기본타입의 값을 포장 객체(래퍼 클래스)로 만드는 과정
📌 언박싱(Unboxing)
- 포장 객체(래퍼 클래스)에서 기본타입의 값을 얻어내는 과정
public class wrapTest {
public static void main(String[] args) {
Integer iObj = 10;
Double dObj = 3.14;
Integer iObj = new Integer(10);
Double dObj = new Double(3.14);
}
}
3. 아래를 프로그래밍 하시오.
Person1 p1 = new Person1("홍길동");
System.out.println(p1.equals(new Person1("홍길동")));
System.out.println(p1.equals(new Person1("최명태")));
class Person {
private String name;
public Person(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (this.name.equals(((Person) obj).name))
return true;
else
return false;
}
}
public class abstractTest3 {
public static void main(String[] args) throws Exception {
Person p1 = new Person("홍길동");
System.out.println(p1.equals(new Person("홍길동")));
System.out.println(p1.equals(new Person("최명태")));
}
}
4. 출력 결과를 예측하고 그렇게 되는 이유를 설명하시오.
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 내용 다르다.");
}
}
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 내용 다르다.");
- s1, s2는 String이기 때문에 s1==s2를 비교하면 각 객체의 주소값이 비교돼서 참조 대상이 다르다고 나온다. 하지만 둘 다 내용은 같기 때문에 equals로 문자열을 비교했을 때는 true로 나온다.
- s2, s3은 참조값이 같고 내용도 같기 때문에 ==으로 참조값을 비교하는 것과 equals로 문자열을 비교하는 것 전부 true로 나온다.
- 출력 결과
5. 문자열을 입력 받아 한 글자씩 회전시켜 모두 출력하는 프로그램을 작성하라.
- 문자열을 입력하세요. 빈칸이나 있어도 되고 영어 한글 모두 됩니다.
- ex) I Love you
Love youI
Love youI
ove youI L
ve youI Lo
e youI Lov
youI Love
youI Love
ouI Love y
uI Love yo
I Love you