# 명품 자바 에센셜 연습문제 6장(이론)

- Author: @baealex
- Published: 2018-08-15
- Updated: 2018-08-15
- Source: http://blex.me/@baealex/%EB%AA%85%ED%92%88-%EC%9E%90%EB%B0%94-%EC%97%90%EC%84%BC%EC%85%9C-%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C-6%EC%9E%A5%EC%9D%B4%EB%A1%A0
- Tags: 자바에센셜

---

<div class="txc-textbox" style="border-style: solid; border-width: 1px; border-color: rgb(254, 254, 184); background-color: rgb(254, 254, 184); padding: 10px;">
<p>문제와 해답은 직접 작성한 것으로 오타가 있을 수도 있으며 해답역시 틀린 부분이 있을 수 있습니다. 틀린 부분에 대한 지적은 적극 수용하도록 하겠습니다. 문제를 먼저 풀어보시고 참고용으로만 봐주시길
        바랍니다.<br/></p>
</div>

#### 연습문제 6장

1. 어떤 패키지에 속한 클래스들이 import하지 않고도 사용할 수 있는가? 
 <span style="color: rgb(255, 0, 0);">java.lang</span>

2. 다음 코드는 키보드로 문자열을 읽어 ‘/’문자로 분리하여 출력하는 코드이다. import문 없이 동작할 수 있도록 수정하라.

```java
import java.util.*;
public class Example {
    public static void main(string[] args) {
        Scanner scanner = new Scanner(System.in);
        StringTokenizer st = new StringTokenizer(scanner.nextLine(),"/");
        while(st.hasMoreToken())
            System.out.println(st.nextToken());
    }
}
```

```java
public class Example {
    public static void main(string[] args) {
        java.util.Scanner scanner = new java.util.Scanner(System.in);
        java.util.StringTokenizer st = new java.util.StringTokenizer(scanner.nextLine(),"/");
        ...
```

3. 다음 Circle 클래스를 drawable 패키지에 속하게 하고자 한다. 빈칸을 채워라.

```java
______________ // Package drawable;
public class Circle {
    int radius;
    public Circle(int radius) { this.radius = radius; }
}
```

그리고 다음 Main 클래스를 app 패키지에 저장하고, drawable 패키지에 속한 Circle 클래스를 사용하고자 한다. 다음 코드의 빈칸을 채워라.

```java
______________ // Package app;
______________ // import drawable.Circle;
public class Main {
    public static void main(string [] args) {
        Circle c = new Circle(5);
    }
}
```

4. Wrapper 클래스에 대한 질문이다. 각 한 줄의 코드로 작성하라. 
 (1) 문자열 "20"을 정수 20으로 변환하는 코드를 작성하라. 
 <span style="color: rgb(255, 0, 0);">Integer.parseInt("20");</span> 
 (2) 문자열 "35.9"를 double 타입의 실수 35.9로 변환하는
 코드를 작성하라. 
 <span style="color: rgb(255, 0, 0);">Double.parseDouble("35.9");</span> 
 (3) 불린 값 true를 "true"라는 문자열로 변환하는
 코드를 작성하라. 
 <span style="color: rgb(255, 0, 0);">Boolean.toString(true);</span> 
 (4) char 타입의 변수 c의 문자가 영문자면 "eng"를 출력하라. 
 <span style="color: rgb(255, 0, 0);">if(Character.isAlphabetic(c)) System.out.println("eng");</span> 
 (5) int
 타입의 변수 n의 값을 이진수의 문자열로 변환하는 코드를 작성하라. 
 <span style="color: rgb(255, 0, 0);">Integer.toBinnaryString(n);</span> 
 (6) 정수 50을 16진수의 문자열로 변환하는 코드를 작성하라. 
 <span style="color: rgb(255, 0, 0);">Integer.toHexString(50);</span>

5. 다음 코드에서 <span style="color: rgb(34, 116, 28);">박싱</span>, <span style="background-color: rgb(34, 116, 28); color: rgb(255, 255, 255);">자동
 박싱</span>, <span style="color: rgb(9, 0, 255);">언박싱</span>, <span style="background-color: rgb(70, 115, 255); color: rgb(255, 255, 255);">자동
 언박싱</span> 이 있는 부분을 파악하라. 
 (1) <span style="color: rgb(34, 116, 28);">Integer n = new Integer(20);</span> 
 (2)
 double d = <span style="background-color: rgb(70, 115, 255); color: rgb(255, 255, 255);">1.2 +<span style="color: rgb(134, 229, 127);">
</span></span> <span style="color: rgb(134, 229, 127); background-color: rgb(70, 115, 255);">new Double(3.4);</span> 
 (3)
 System.out.print( <span style="background-color: rgb(70, 115, 255); color: rgb(255, 255, 255);">3 + <span style="color: rgb(134, 229, 127);">new
 Integer(20)</span></span> ); 
 (4) <span style="background-color: rgb(34, 116, 28); color: rgb(255, 255, 255);">Boolean b = true;</span> 
 (5) <span style="background-color: rgb(70, 115, 255); color: rgb(255, 255, 255);">float f = <span style="color: rgb(134, 229, 127);">new
 Float("10.1");</span></span> 
 (6) String s = "abc";

6. ==연산자와 equals() 메소드의 용도는 서로 다르다. 이 둘 중 두 레퍼런스가 같은지 비교하기 위해 사용되는 것은 무엇인가? **<span style="color: rgb(255, 0, 0);">‘==’</span>** 그리고 두 레퍼런스가 가리키는 객체의 내용물이 같은지 비교하기 위해 사용되는 것은 무엇인가? **<span style="color: rgb(255, 0, 0);">‘equals()’</span>**

7. 다음 코드에 대해 물음에 답하여라.

```java
String a = "Hello";
String b = "Hello";
String c = "Java";
String d = new String("Hello");
String e = new String("Java");
String f = new String("Java");
```

(1) a와 == 연산을 수행하였을때 ture가 되는 문자열을 b-f중 모두 골라라. 
 <span style="color: rgb(255, 0, 0);">b</span> 
 (2) f와 equals() 연산을 수행하였을때 true가 되는 문자열을 a-e중 골라라. 
 <span style="color: rgb(255, 0, 0);">c, e</span>

8. 다음 문장의 실행 결과에 맞게 빈칸을 채워라.

```java
StringTokenizer st = new StringTokenizer("2+3+4+6", "+");
int n = st.countTokens();
System.out.println("토큰 갯수 = " + n);
while(____________) { // st.hasMoreToken()
    System.out.print(____________ + " "); // st.nextToken()
}
```

9. 다음 연산의 결과 a, b, c는 어떤 문자열인가?

```java
String a = new String(" hello ");
String b = a;
String c = a.trim();
String a = a.toUpperCase();
```

<span style="color: rgb(255, 0, 0);">a: ' HELLO '
 </span> 
 <span style="color: rgb(255, 0, 0);"> b: ' hello '
 </span> 
 <span style="color: rgb(255, 0, 0);"> c: 'hello'</span>
