1. 다음 조건을 만족하는 클래스 Person을 구현하여 테스트하는 프로그램을 작성하시오.
- 클래스 Person은 이름을 저장하는 필드 구성
- 클래스 Person은 상위 클래스 Object의 메소드 equals()를 오버라이딩하여 이름이 같으면 true를 반환하는 메소드 구현
- 다음과 같은 소스로 클래스 Person을 점검
Person p1 = new Person("홍길동");System.out.println(p1.equals(new Person("홍길동")));
System.out.println(p1.equals(new Person("최명태")));
<소스코드>
Person.java
package Chapter7_1;
public class Person {
String name; // 이름
Person(String name){
this.name = name;
}
public boolean equals(Person p) {
if(this.name.equals(p.name)) {
return true;
}
else {
return false;
}
}
}
Chapter7_1.java
package Chapter7_1;
public class Chapter7_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p1 = new Person("홍길동");
System.out.println(p1.equals(new Person("홍길동")));
System.out.println(p1.equals(new Person("최명태")));
}
}
2. 다음 조건을 만족하도록 8개의 랩퍼 클래스 객체를 처리하는 프로그램을 작성하시오.
- 박싱 기능을 사용하여 8개의 랩퍼 클래스의 객체를 생성
- 언박싱 기능과 메소드 printf()를 사용하여 위 객체를 그대로 출력
<소스코드>
Chapter7_2.java
package Chapter7_2;
public class Chapter7_2 {
static void printf(Object o) {
System.out.println(o);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Byte b1 = 1;
Short s = 2;
Integer i = 3;
Long l = 4l;
Float f = 5f;
Double d = 6.0;
Character c = 'a';
Boolean b2 = true;
Chapter7_2.printf(b1);
Chapter7_2.printf(s);
Chapter7_2.printf(i);
Chapter7_2.printf(l);
Chapter7_2.printf(f);
Chapter7_2.printf(d);
Chapter7_2.printf(c);
Chapter7_2.printf(b2);
}
}
3. 다음 조건을 만족하는 클래스 String의 객체 이용 프로그램을 작성하여 메소드 equals()와 연산자 ==의 차이를 비교 설명하시오.
- 메소드 equals()와 비교 연산자 ==의 차이를 다음 소스로 점검
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));
<소스코드>
Chapter7_3.java
package Chapter7_3;
public class Chapter7_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 = new String("java");
String s2 = new String("java");
String s3 = s2;
System.out.println(s1 == s2); // s2와 s1은 주소가 다르므로 false
System.out.println(s1.equals(s2)); // s1와 s2의 값이 같으므로 true
System.out.println(s2 == s3); // s3은 s2와 같은 객체를 가르키고 있으므로 주소가 같음 true
System.out.println(s2.equals(s3)); // s2와 s3의 값이 같으므로 true
}
}
4. 다음 조건을 만족하도록 표준입력으로 년, 월, 일을 입력 받아 요일을 출력하는 프로그램을 작성하시오.
- 클래스 Calendar를 사용
<소스코드>
Chapter7_4.java
package Chapter7_4;
import java.util.Calendar;
import java.util.Scanner;
public class Chapter7_4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
int year;
int month;
int date;
String d;
System.out.print("년도를 입력하시오 : ");
year = input.nextInt();
System.out.print("월을 입력하시오 : ");
month = input.nextInt();
System.out.print("일을 입력하시오 : ");
date = input.nextInt();
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1);
cal.set(Calendar.DATE, date);
switch(cal.get(Calendar.DAY_OF_WEEK)) {
case 1:
d="일요일";
break;
case 2:
d="월요일";
break;
case 3:
d="화요일";
break;
case 4:
d="수요일";
break;
case 5:
d="목요일";
break;
case 6:
d="금요일";
break;
default:
d="토요일";
break;
}
System.out.println(d);
}
}
5. 다음 조건을 만족하도록 오늘의 정보를 출력하는 프로그램을 작성하시오.
- 클래스 Calendar의 객체의 다음 메소드를 사용하며
* get(Calendar.DAY_OF_WEEK_IN_MONTH) : 달에서 요일의 횟수 반환
* get(Calendar.DAY_OF_WEEK) : 요일을 반환, 1이 일요일
* get(Calendar.WEEK_OF_MONTH) : 월의 주 횟수를 반환
* get(Calendar.DAY_OF_YEAR) : 해의 날짜를 반환
* get(Calendar.WEEK_OF_YEAR) : 해의 주 횟수를 반환
- 다음과 같이 출력되도록 한다.
오늘은 2012년 6월 17일 일요일입니다.이 달의 3번째 일요일입니다.
이 달의 4번째 주입니다.
이 해의 169일입니다.
이 해의 25번째 주입니다.
<소스코드>
Chapter7_5.java
package Chapter7_5;
import java.util.Calendar;
public class Chapter7_5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH)+1;
int date = cal.get(Calendar.DATE);
String d;
switch(cal.get(Calendar.DAY_OF_WEEK)) {
case 1:
d="일요일";
break;
case 2:
d="월요일";
break;
case 3:
d="화요일";
break;
case 4:
d="수요일";
break;
case 5:
d="목요일";
break;
case 6:
d="금요일";
break;
default:
d="토요일";
break;
}
System.out.println("오늘은 "+year+"년 "+month+"월 "+date+"일 "+ d+"입니다.");
System.out.println("이 달의 "+cal.get(Calendar.DAY_OF_WEEK_IN_MONTH)+"번째"+d+"입니다.");
System.out.println("이 달의 "+cal.get(Calendar.WEEK_OF_MONTH)+"번째 주입니다.");
System.out.println("이 해의 "+cal.get(Calendar.DAY_OF_YEAR)+"일입니다.");
System.out.println("이 해의 "+cal.get(Calendar.WEEK_OF_YEAR)+"번째 주입니다.");
}
}
참고자료 : 인피니티북스 절대 JAVA
github 주소 :
https://github.com/ch1517/Network-programming/tree/master/Chapter7
'Programming Study > 절대JAVA' 카테고리의 다른 글
[절대JAVA]8장 프로그래밍 연습문제(1) (0) | 2018.09.27 |
---|---|
[절대JAVA]7장 프로그래밍 연습문제(2) (0) | 2018.09.25 |
[절대JAVA]6장 프로그래밍 연습문제(2) (0) | 2018.09.23 |
[절대JAVA]6장 프로그래밍 연습문제(1) (0) | 2018.09.23 |
[절대JAVA]5장 프로그래밍 연습문제(2) (0) | 2018.09.23 |
댓글