SW공부 34일차

Guryena·2023년 2월 15일
0

CS

목록 보기
27/34

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

  • 래퍼 클래스(Wrapper class)
    프로그램에 따라 기본 타입의 데이터를 객체로 취급해야 하는 경우가 있다.

    예를 들어, 메소드의 인수로 객체 타입만이 요구되면, 기본 타입의 데이터를 그대로 사용할 수는 없다.

    이때에는 기본 타입의 데이터를 먼저 객체로 변환한 후 작업을 수행해야 한다.


    이렇게 8개의 기본 타입에 해당하는 데이터를 객체로 포장해 주는 클래스를 래퍼 클래스(Wrapper class)라고 한다.

    래퍼 클래스는 각각의 타입에 해당하는 데이터를 인수로 전달받아, 해당 값을 가지는 객체로 만들어 준다.

    이러한 래퍼 클래스는 모두 java.lang 패키지에 포함되어 제공된다.

2. 박싱과 언박싱에 대하여 설명하시오.

래퍼 클래스(Wrapper class)는 산술 연산을 위해 정의된 클래스가 아니므로, 인스턴스에 저장된 값을 변경할 수 없다.

단지, 값을 참조하기 위해 새로운 인스턴스를 생성하고, 생성된 인스턴스의 값만을 참조할 수 있다.

  • 박싱(Boxing)
    값 형식(Value Types)을 참조 형식(reference Types)으로 변환 해주는 것을 의미한다.
  • 언박싱(UnBoxing)
    박싱했던 값을 다시 원상태로 복귀 시키는 것이다.

3. 아래를 프로그래밍 하시오.

		Person1 p1 = new Person1("홍길동");
		System.out.println(p1.equals(new Person1("홍길동"))); // true
		System.out.println(p1.equals(new Person1("최명태"))); // false
public class Person {
	private String str;
	
	public Person(String strName) {
		// TODO Auto-generated constructor stub
		str = strName;
	}

	@Override
	public boolean equals(Object obj) {
//		 TODO Auto-generated method stub
		//'equals'function with String type is print what Value in String 
		if (obj instanceof Person) {
			
			Person person = (Person)obj;
			
			if (this.str.equals(person.str)) {
				return true;
			}
		}
		return false;
		
		
//		if (this.str.equals(((Person)obj).str)) {
//			return true;
//		}
		
		//This code is different from code.equals
		//because '==' is compare to reference address
		
//		if (this.str == ((Person)obj).str) {
//			return true;
//		}
//		else {
//			return 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 내용 다르다.");

	}
}

String type의 equlas함수는 String의 값을 출력하지만, ==연산자는 참조 주소를 비교한다.

5. 문자열을 입력 받아 한 글자씩 회전시켜 모두 출력하는 프로그램을 작성하라.

//문자열을 입력하세요. 빈칸이나 있어도 되고 영어 한글 모두 됩니다.

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

import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("문자열을 입력하세요. 빈칸이나 있어도 되고 영어 한글 모두 됩니다.");
		String input = sc.nextLine();

		for (int i = 0; i <= input.length(); i++) {
			System.out.print(input.substring(i));
			System.out.println(input.substring(0, i));
		}
		sc.close();
	}
}

0개의 댓글