36일 차 - 래퍼 클래스, 박싱·언박싱 (23.02.15)

yvonne·2023년 2월 15일
0

📂Java

목록 보기
36/51
post-thumbnail

1. 래퍼 클래스에 대하여 설명하시오.

📌래퍼 클래스(wrapper class)

  • 기본 자료타입(primitive type)을 객체로 다루기 위해 사용하는 클래스
  • 기본 타입의 값을 내부에 두고 포장하기 때문에 포장 객체라고도 한다.
  • 래퍼 클래스로 감싸고 있는 기본 타입 값은 외부에서 변경할 수 없다. (변경하고 싶으면 새로운 포장 객체를 생성해야 함)
기본타입(primitive type)래퍼 클래스(wrapper class)
byteByte
charCharacter
intInteger
floatFloat
doubleDouble
booleanBoolean
longLong
shortShort





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("홍길동"))); // true
		System.out.println(p1.equals(new Person1("최명태"))); // false


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)) // String 이라서 equals로 오버라이딩 해야함.
			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("홍길동"))); // true
		System.out.println(p1.equals(new Person("최명태"))); // false
 	}
 }





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);	// false
		System.out.println(s1.equals(s2));	// true
		System.out.println(s2 == s3);	// true
		System.out.println(s2.equals(s3));	// true
        
        
        
		if (s1 == s2)
			System.out.println("s1, s2 참조 대상 같다.");
		else
			System.out.println("s1, s2 참조 대상 다르다. "); // o

		if (s2 == s3)
			System.out.println("s2, s3 참조 대상 같다.");	// o
		else
			System.out.println("s2, s3 참조 대상 다르다. ");

		if (s1.equals(s2))
			System.out.println("s1, s2 내용 동일하다.");	// o
		else
			System.out.println("s1, s2 내용 다르다.");

		if (s2.equals(s3))
			System.out.println("s2, s3 내용 동일하다.");	// o
		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
profile
개발 연습장

0개의 댓글