본문 바로가기

JavaStudy(open)/퀴즈

0627 스터디 문제풀이

1. 얕은 복사(shallow copy) 와 깊은 복사(deep copy)는 무엇인가요? 
-> 얕은 복사 : 단순히 객체에 저장된 값을 그대로 복제함. 객체가 참조하고 있는 객체까지 복제하지는 않는다.

                   원본과 복사본이 같은 객체를 참조함. 그래서 원본을 변경하면 복사본도 영향을 받는다.

    깊은 복사 : 원본이 참조하고 있는 객체까지 복제하는 것

                   원본과 복사본이 서로 다른 객체를 참조하기 때문에 원본의 변경이 영향을 미치지 않는다. 

2. Int num = 1234를 String으로 바꾸는 대표적인 방법인 코드를 적어보세요.

String.valueOf(num);


3. String str = “1432”를 int로 바꾸는 방법이 2가지가 있습니다 모두 적어보
세요.

1) Integer.parseInt(str);
2) new Integer(str).intValue();
★  Integer.valueOf(str); 은 기본형 int가 아니라 래퍼클래스 Integer로 바꿔준다.


4. String str = “별이,빛나는,밤에” 쉼표(,)로 구분되어 있는 문자열을 split() 메
소드와 StringTokenizer를 이용하여 분리하여 출력하세요. (출력방식은 자
유)

 String night = "별이,빛나는,밤에";
 StringTokenizer st = new StringTokenizer(night,",");

    while(st.hasMoreTokens()) {
       System.out.println(st.nextToken());
    }


        
5. 첫번째는 알파벳으로 시작하고 두 번째부터는 숫자와 알파벳으로 구성된
8자~12자 사이의 ID값인지 검사하려고 한다. 알파벳은 대소문자를 모두
허용할 경우에 정규표현식을 이용해서 검증하는 코드를 작성해주세요.

String id = "5Angel1004";

정답)
String regExp = "[a-zA-Z]{1}[a-zA-Z0-9]{7,11}";

boolean isMatch = Pattern.matches(regExp, id);
if (isMatch) {
 System.out.println("ID 로 사용할 수 있습니다.");
} else {
 System.out.println("ID 로 사용할 수 없습니다.");
}



6. SimpleDataeFormat 클래스를 사용하여 오늘날짜를 다음과 같이 출력하는
코드를 작성하세요.

2021 년 06 월 20 일 일요일 8 시 00 분

Date today = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy년 MM월 dd일 E요일 K시 mm분"); 

// 날짜를 저 형식으로 변환

String result = df.format(today);
System.out.println(result);


7. 두 날짜를 비교하는 메소드는 어떤 메소드 인가요 대표적으로 2가지를 적2
어주세요.
-> isEqual(), compareTo()

8. 위 7번의 정답을 이용하여 오늘과 내일 날짜를 비교하는 코드를 간단히 작
성해주세요.

LocalDate today = LocalDate.now();
LocalDate tommorrow = today.plusDays(1);

int result = today.compareTo(tommorrow); // 같으면 0, today가 이전이면 -1, today가 이후면 1


9. Calendar를 Date로 변환하고 Date를 Calendar로 변환해보세요.

// 1. Calendar를 Date로 변환
Calendar cal = Calendar.getInstance();
Date d = new Date(cal.getTimeInMillis()); // Date(long date)

// 2. Date를 Calendar로 변환
Date d1 = new Date();
Calendar cal1 = Calendar.getInstance();
cal1.setTime(d1);


10.두 날짜를 비교하는 함수 equals()와 isEqual()의 차이점은 무엇 입니까?
-> isEqual()는 연표가 다른 두 날짜를 비교가 가능 - 오직 날짜만 비교함

    equals()는 연표가 다르면 날짜가 같아도 false로 나옴 - 모든 필드가 일치해야함.


11. StringBuffer 클래스와 StringBuilder 클래스의 차이는 무엇인가? 
-> StringBuffer는 멀티쓰레드에 안전하도록 동기화 됨

    StringBuilder는 쓰레드의 동기화를 뺀. 나머지는 완전히 똑같은 기능으로 작성됨.


12.래퍼(wrapper) 클래스란 무엇인가? 
-> 기본형 값들을 객체로 변환한 클래스


13.오토박싱(autoboxing)과 언박싱(unboxing)의 개념을 설명하라. 
-> 오토박싱 : 기본형 -> 래퍼클래스 변환
    언박싱 :  래퍼클래스 -> 기본형 변환


14.정규식 패턴 c[a-zA-Z0-9].* 가 도출하는 결과값은 무엇인가? 
-> c로시작하는 숫자와 영어로 조합된 문자열

15.긴 문자열을 지정된 구분자(delimiter)를 기준으로 토큰(token)이라는
문자열로 잘라내는 데 사용되는 java.util 의 클래스는 무엇인가?  StringTokenizer

16.두 날짜 간의 차이를 일단위로 반환하는 메서드는 무엇인가?  long toDays()

17.숫자를 형식화 하는데 사용되는 클래스인 DecimalFormat 으로 소수점 한
자리의 10 진수를 표현하는 패턴은 무엇인가? #.#

18.에포크 타임(EPOCH TIME, 1970-01-01 00:00:00 UTC)로부터 경과된
시간을 나노초 단위로 표현하는 클래스는 무엇인가? Instant

19. Period 와 Duration 을 다른 단위의 값으로 변환하는데 사용하는 ‘to’로
시작하는 메소드를 2 개 이상 나열하라.

-> toTotalMonths(), toDays(), toHours(), toMinutes()

20.얕은 복사와 깊은 복사의 차이를 설명하고, Object 클래스의 clone()을
사용하여 shallowCopy()와 deepCopy()를 구현하시오

-> 1번에서 둘의 차이 설명 참고,

public class Circle implements Cloneable {

    Point p;
    Double r;

    Circle(Point p , double r) {
        this.p = p;
        this.r = r;
    }

    public Circle shallowCopy() {
        Object obj = null;

        try {
           obj = super.clone();
        } catch (CloneNotSupportedException e) { }
        return (Circle)obj;
    }

    public Circle deepCopy() {
        Object obj = null;

        try {
            obj = super.clone();
        } catch (CloneNotSupportedException e) { }

        Circle c = (Circle)obj;
        c.p = new Point(this.p.x, this.p.y);

        return c;
    }
}

class Point {
    int x;
    int y;

    Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

 

 

 

 

'JavaStudy(open) > 퀴즈' 카테고리의 다른 글

20210704 퀴즈 숙제  (0) 2021.07.04