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 |
---|