본문 바로가기
IT/프로그래밍

명품 JAVA Programming 6장 연습문제 정답

by nutrient 2020. 12. 11.
728x90
728x170

명품 JAVA Programming 6장 연습문제 정답

 

명품 JAVA Programming 6장 연습문제 정답

 

1.

(1) import 문은 다른 패키지에 있는 클래스를 사용할 때 코드의 서두에 선언하는 것으로, 컴파일러에게 그 클래스의 경로명을 알려주는 문이다.

(2) import java.util.Random;은 Random 클래스가 java.util 패키지에 있음을 컴 파일러에게 알려주는 문이다. 자바 소스 프로그램에서 Random의 이름을 사용 하면, 컴파일러가 Random 클래스의 경로명을 찾을 때, import 문을 참조하여 찾게 한다. import java.util.*;는 자바 프로그램 내에서 사용하는 클래스들 의 경로명을 찾을 때, java.util 패키지에서도 확인할 것을 컴파일러에게 지 시하는 문이다. 만일 자바 소스 프로그램에서 Random 클래스를 사용하면, 컴 파일러는 Random 클래스가 어느 패키지에 있는지 찾기 위해 java.util 패키지 에서 확인해본다. import java.util.*;는 import java,util.Random; import java,util.Vector; 등과 같이 여러 import 문을 줄여 사용할 때 유용하다.

(3) import 문을 사용하지 않고도 자바 프로그램을 작성할 수 있다. 자바 프로그램 을 작성할 때, 모든 클래스의 이름에 완전 경로명을 사용하면 된다. 예를 들면 java.util.Random r = new java.util.Random(); 과 같이 완전 경로명으로 작 성하는 것이다. 하지만, 프로그램의 코드가 길어지고 복잡해져 가독성이 떨어 지는 단점이 있어 import 문을 사용하는 것이 효과적이다.

(4) java.lang 패키지에 속한 클래스들은 import 없이도 사용할 수 있다. java. lang 패키지에 속한 클래스들로는 Object, String, Math, System 등이 있다.

2. ④. 자바 JDK는 수많은 클래스들을 제공하는데, 서로 관련 있는 클래스들을 하나의 패키지로 구성하는 식으로 수 많은 패키지에 분산 저장하여 제공한다.

3. import 문을 사용하지 않도록 Example 클래스를 다시 작성하면 다음과 같다.

public class Example { public static void main(String[] args) { java.util.StringTokenizer st = new java.util.StringTokenizer("a=3,b=5,c=6", ","); while (st.hasMoreTokens()) System.out.println(st.nextToken()); } }

 

순자산 8.4억이면 상위 10%.JPG

인터넷에서 유명한 글인 순자산 8.4억이면 상위 10%에 대해 알아보도록 하겠습니다. 이 글을 처음부터 끝까지 읽다 보면 순자산 8.4억이면 상위 10%에 대해 아는데 도움이 될 것입니다. 순자산 8.4

tistorysolution.tistory.com

 

 

4. 여러 가지로 작성할 수 있는데, 첫 번째 다음과 같이 작성할 수 있다.

import java.util.StringTokenizer; public class Example { public static void main(String[] args) { int sum = 0; StringTokenizer st = new StringTokenizer("a=3,b=5,c=6", ",="); while (st.hasMoreTokens()) { String token = st.nextToken(); System.out.println(token); int n = 0; try { n = Integer.parseInt(token); } catch(NumberFormatException e) { // 정수가 아닌 경우 아무것도 하지 않고 그냥 넘어 간다. } sum += n; } System.out.println("합은 " + sum); } }

좀 다르게 작성하면 다음과 같다.

import java.util.StringTokenizer; public class Example { public static void main(String[] args) { int sum = 0; int n = 1; StringTokenizer st = new StringTokenizer("a=3,b=5,c=6", ",="); while (st.hasMoreTokens()) { String token = st.nextToken(); System.out.println(token); if(n%2 == 0) { // 짝수번째 토컨에 대해서만 정수로 변환하여 합하기 sum += Integer.parseInt(token); } n++; } System.out.println("합은 " + sum); } }

5. (1)

package device; public class TV { private int size; public TV(int size) { this.size = size; } }

(2)

package app; import device.TV; public class Home { public Home() { TV myTv = new TV(65); } }

package app;와 import device.TV;의 순서가 다르면 틀린 답이다. 반드시 package 선언이 먼저 와야 한다.

(3) TV 클래스를 컴파일한 TV.class 파일의 경로명은 device.TV.class이고, Home 클래스를 컴파일한 Home.class 파일의 경로명은 app.Home.class이다.

6. (1) String s1 = Integer.toString(20); (2) double d = Double.parseDouble("35.9"); (3) boolean b = Boolean.parseBoolean("true"); (4) String s2 = Integer.toBinaryString(30); (5) String c = Character.toString('c');

7. 다음 코드를 실행하면,

String a = "가나다라"; System.out.println(a == "가나다라"); String b = new String(a); System.out.println(a == b);

다음과 같이 출력된다.

true false

설명을 위해 다음 그림을 참고하라.

"가나다라"a

"가나다라"b

자바 가상 기계의 스트링 리터럴 테이블

힙 메모리

"가나다라" 문자열은 자바 가상 기계의 스트링 리터럴 테이블에 저장되고, String a의 레퍼런스 a는 리터럴 테이블을 가리키므로, "가나다라" 문자열의 레퍼런스와 레퍼런스 a의 값은 일치한다. 그러므로 a == "가나다라"의 비교 연산은 true이다. 하지만, new String(a)에 의해 생성되는 객체는 힙에 생성되므로 String b는 힙 영역을 가리킨다. 그러므로 a == b의 연산에서 a와 b의 레퍼런스 값은 서로 달라 연산 결과는 false가 된다.

8. 다음 코드 실행된 후 a, b, c 문자열은 무엇인지 알아보자.

String a = new String(" Oh, Happy "); String b = a.trim(); String c = b.concat(" Day.");

a.trim() 후에도 문자열 a는 변하지 않는다. 다만 trim()은 문자열 앞뒤의 공백문 자를 제거한 새로운 문자열을 리턴하므로 a와 b는 다음과 같이 된다. 문자열 a : " Oh, Happy " 문자열 b : "Oh, Happy"

그리고 b.concat() 후에도 문자열 b는 변하지 않고, 문자열을 연결한 새로운 문자 열을 리턴한다. 그러므로 문자열 c는 다음과 같다. 문자열 c : "Oh, Happy Day."

String 클래스의 메소드는 현재 문자열을 수정하지 않는다. 이것은 String 객체의 특징이다.

 

주식하면 집안 망한다.

인터넷에서 화제인 주식하면 집안 망한다에 대해 알아보도록 하겠습니다. 이 글을 처음부터 끝까지 읽다 보면 주식하면 집안 망한다에 대해 아는데 도움이 될 것입니다. 주식하면 집안 망한

tistorysolution.tistory.com

 

 

9. (1) b (2) c, e

10. (1) Double PI = 3.14; // 3.14를 Double(3.14)로 자동 박싱 (2) double pi = PI; // PI를 PI.doubleValue();로 자동 언박싱

(3) System.out.println(3 + Integer.valueOf(5)); // Integer.valueOf(5)는 Integer.valueOf(5).intValue()로 자동 언박싱 되어 // 실행 중에 5가 된다. (4) if('c' == Character.valueOf('c')) // Character.valueOf('c')가 Character.valueOf('c').charValue()로 자동 언박싱되어 실행 중에 'c'가 된다.

11. (1) Math 클래스를 활용하여 100~255까지의 랜덤 정수 발생

for(int i=0; i<10; i++) System.out.println((int)(Math.random()*156 + 100));

(2) Random 클래스를 난수를 발생시키도록 코드 전체를 재작성하면 다음과 같다.

import java.util.Random; public class Example { public static void main(String[] args) { Random r = new Random(); for(int i=0; i<10; i++) { System.out.print(r.nextInt(156) + 100); System.out.print(" "); } } }

12.

Calendar date = Calendar.getInstance(); // Calendar 객체 생성 date.clear(); // 현재 Calendar 객체에 저장된 정보를 모두 지운다. date.set(Calendar.YEAR, 2020); // Calendar 객체에 2020년의 년도 저장 date.set(Calendar.MONTH, 11); // Calendar 객체에 12월의 달 저장 date.set(Calendar.DAY_OF_MONTH, 25); // Calendar 객체에 25일의 날짜 저장 System.out.println("약속 날짜는 " + date.get(Calendar.YEAR) + "년 " + (date.get(Calendar.MONTH) + 1) + "월 " + date.get(Calendar.DAY_OF_MONTH)+ 일");

 

팔도 왕뚜껑 매출 절반이 날아갔던 사건

인터넷에서 화제인 팔도 왕뚜껑 매출 절반이 날아갔던 사건에 대해 알아보도록 하겠습니다. 팔도 왕뚜껑 매출 절반이 날아갔던 사건이라는 글은 인터넷에서 유명한 글이며 작성자가 쓴 글

tistorysolution.tistory.com

 

728x90
그리드형

댓글