기본 콘텐츠로 건너뛰기

방송대 방통대 Java프로그래밍 8강 - java.lang 패키지 - 요약 노트 시험족보 예상문제 - 올에이클래스

Java프로그래밍 8강 - java.lang 패키지

Java프로그래밍 8강 - java.lang 패키지

이번 강의에서는 자바 프로그램의 기본 토대를 이루는 java.lang 패키지를 학습한다. 모든 클래스의 최상위 클래스인 Object부터 문자열을 다루는 String과 StringBuffer, 기본형을 객체처럼 다루게 하는 포장 클래스, 시스템 기능과 표준 입출력을 제공하는 System 클래스까지 핵심 개념과 사용법을 정리한다.

제1장 java.lang 패키지의 역할

1. 기본 기능을 모아 둔 패키지

java.lang 패키지는 자바 프로그램에 필요한 가장 기본적인 클래스와 인터페이스를 제공한다. 다른 패키지의 클래스를 사용할 때는 일반적으로 import 문이 필요하지만, java.lang에 포함된 클래스는 컴파일러가 자동으로 사용할 수 있게 하므로 별도의 import 문을 작성하지 않아도 된다.

대표적으로 모든 클래스의 조상인 Object, 문자열을 표현하는 StringStringBuffer, 프로세스와 스레드를 지원하는 ProcessThread, 예외 처리와 관련된 Exception·Throwable·Error, 실행 환경 및 수학 기능을 제공하는 System·Math 등이 있다. 기본형 값을 객체로 표현하는 Integer, Double, Character, Boolean과 같은 포장 클래스도 이 패키지에 속한다.

시험 핵심: java.lang 패키지는 자동으로 포함되므로 String, System, Integer 등을 사용할 때 import 문이 필요하지 않다.

분류대표 클래스주요 역할
최상위 클래스Object모든 클래스가 공통으로 가지는 기본 메소드를 제공한다.
문자열String, StringBuffer문자열의 표현, 검색, 변환과 변경을 지원한다.
실행과 오류Process, Thread, Throwable프로세스·스레드 및 예외·오류 체계의 기반을 제공한다.
시스템 기능System, Math표준 입출력, 시스템 환경 및 수학 연산 기능을 제공한다.
포장 클래스Integer, Double, Character, Boolean기본형 데이터를 객체 형태로 표현한다.

제2장 Object 클래스

1. 모든 클래스의 최상위 조상

Object는 자바의 모든 클래스가 공통으로 상속받는 최상위 클래스이다. 클래스 선언에서 다른 부모 클래스를 명시하지 않으면 컴파일러는 그 클래스가 Object를 상속하도록 처리한다. 따라서 사용자가 만든 클래스도 Object에 정의된 메소드를 물려받으며, 필요하면 목적에 맞게 재정의할 수 있다.

Object의 주요 메소드에는 객체를 복제하는 clone(), 두 객체가 같은지 비교하는 equals(Object obj), 객체의 실행 중 클래스 정보를 얻는 getClass(), 객체를 식별하는 정수값을 반환하는 hashCode(), 객체를 문자열로 표현하는 toString() 등이 있다.

Object형 참조 변수는 여러 종류의 객체를 가리킬 수 있다. 이러한 특성은 상속과 다형성을 활용하는 자바 프로그램의 공통 기반이 된다.

메소드기능
protected Object clone()현재 객체를 복제한 객체를 반환한다.
public boolean equals(Object obj)현재 객체와 전달된 객체가 같은지 비교한다.
public final Class getClass()현재 객체의 실행 중 클래스 정보를 반환한다.
public int hashCode()객체를 식별하는 해시 코드를 반환한다.
public String toString()객체를 나타내는 문자열을 반환한다.

제3장 Object의 주요 메소드

1. toString()과 객체의 문자열 표현

toString()은 객체를 문자열로 표현해 반환한다. Object에 정의된 기본 구현은 일반적으로 클래스 이름과 해시 코드에 기반한 문자열을 만들기 때문에 객체의 실제 상태를 이해하기에는 부족할 수 있다. 자식 클래스에서 이 메소드를 재정의하면 객체의 의미 있는 정보를 원하는 형식으로 출력할 수 있다.

문자열과 객체를 + 연산자로 연결하거나 객체를 System.out.println()에 전달하면 객체의 toString()이 자동으로 사용된다. 따라서 다음과 같이 재정의하면 객체 자체를 출력했을 때도 지정한 문자열이 표시된다.

class MyClass extends Object {
    @Override
    public String toString() {
        return "This MyClass class";
    }
}

2. equals()와 참조 비교

Object의 equals()는 기본적으로 두 참조가 같은 객체를 가리키는지 판단하는 ==와 같은 방식으로 동작한다. 그러나 String이나 Integer 같은 여러 클래스는 객체가 나타내는 값을 비교하도록 equals()를 재정의한다. 그러므로 참조가 같은지를 확인하는 ==와 내용 또는 논리적 동등성을 확인하는 equals()를 구별해야 한다.

예를 들어 Integer.valueOf(5).equals(Integer.valueOf(5))는 값이 같으므로 참이다. 반면 Integer와 Short처럼 서로 다른 포장 클래스의 객체는 숫자 값이 같아도 equals()의 결과가 거짓일 수 있다. 또한 서로 비교할 수 없는 참조형을 ==로 비교하면 컴파일 오류가 발생할 수 있다.

3. clone()과 객체 복제

clone()은 현재 객체를 복제해 새 객체로 반환한다. Object의 clone()을 정상적으로 사용하려면 복제할 클래스가 Cloneable 인터페이스를 구현해야 한다. 구현하지 않은 객체에서 clone()을 호출하면 CloneNotSupportedException이 발생할 수 있으므로 예외를 처리해야 한다.

class Box implements Cloneable {
    private int width, height;

    public Object clone() {
        try {
            return super.clone();
        } catch (CloneNotSupportedException e) {
            return null;
        }
    }
}

super.clone()의 반환형은 Object이므로 구체적인 Box 참조에 대입하려면 (Box)와 같은 형변환이 필요하다. 복제된 객체는 원본과 필드 값은 같을 수 있지만 서로 별도의 객체이므로 출력되는 객체 식별 문자열도 다를 수 있다.

4. getClass()와 실행 중 클래스 정보

getClass()는 현재 객체의 유형 정보를 가진 Class 객체를 반환한다. Class 객체의 getName()으로 클래스 이름을, getSuperclass()로 부모 클래스 정보를 얻을 수 있다. 또한 getDeclaredFields()getDeclaredMethods()를 이용하면 선언된 필드와 메소드 목록을 조사할 수 있다.

구별: toString()은 문자열 표현, equals()는 동등성 비교, clone()은 객체 복제, getClass()는 실행 중 클래스 정보 확인에 사용한다.

제4장 String 클래스와 문자열 비교

1. String 객체의 생성

String은 문자열을 표현하고 처리하는 클래스이다. new String("Java")처럼 생성자를 호출해 객체를 만들 수도 있고, String s = "Java";처럼 기본 자료형과 비슷한 리터럴 표기법을 사용할 수도 있다. 같은 문자열 리터럴은 하나의 객체를 만들어 공유할 수 있지만, new를 사용하면 내용이 같더라도 별도의 객체가 만들어진다.

String 객체는 한 번 만들어진 뒤 내부 내용이 바뀌지 않는 불변 객체이다. 문자열을 수정하는 것처럼 보이는 메소드는 기존 객체 자체를 바꾸지 않고 변경 결과를 담은 새로운 String 객체를 반환한다. 생성자로는 빈 문자열을 만드는 String(), 다른 문자열로 초기화하는 String(String original), 문자 배열 전체나 일부를 문자열로 만드는 생성자 등이 있다.

2. 문자열 비교 메소드

문자열의 내용을 비교할 때는 equals()를 사용한다. compareTo(String anotherString)은 두 문자열이 같으면 0을 반환하고, 사전식 순서에 따라 현재 문자열이 앞서면 음수, 뒤서면 양수를 반환한다. compareToIgnoreCase()equalsIgnoreCase()는 대소문자를 무시해 비교한다.

비교 방법판단 대상결과
==두 참조가 같은 객체를 가리키는지boolean
equals()두 문자열의 내용이 같은지boolean
compareTo()문자열의 사전식 순서음수, 0, 양수
equalsIgnoreCase()대소문자를 무시한 내용의 동일성boolean

시험 핵심: String s1 = "Java";String s2 = "Java";는 같은 리터럴 객체를 공유할 수 있지만, new String("Java")로 만든 객체는 별도 객체이다. 문자열 내용 비교에는 참조 비교 연산자보다 equals()를 사용한다.

제5장 String의 검색·추출·변환

1. 문자열 검색

indexOf(String str)는 앞에서부터 부분 문자열을 찾아 처음 나타나는 인덱스를 반환한다. indexOf(String str, int fromIndex)는 지정한 위치부터 검색하며, 찾지 못하면 -1을 반환한다. lastIndexOf()는 뒤에서부터 검색해 마지막으로 나타난 위치를 찾는다.

2. 문자와 부분 문자열 추출

charAt(int index)는 지정한 인덱스의 문자 하나를 반환한다. substring(int beginIndex)는 시작 위치부터 문자열 끝까지 추출하고, substring(int beginIndex, int endIndex)는 beginIndex부터 endIndex 바로 앞까지 추출한다. String의 인덱스도 0부터 시작한다.

3. 문자열 변환

replace(char oldChar, char newChar)는 지정한 문자를 바꾼 새 문자열을 반환한다. trim()은 문자열 앞뒤의 공백을 제거하고, toUpperCase()toLowerCase()는 각각 대문자와 소문자로 변환한다. concat(String str)은 두 문자열을 연결한다. 이 모든 결과는 String의 불변성 때문에 원본을 수정하지 않고 새 객체로 만들어진다.

4. 다른 자료형을 문자열로 변환

String.valueOf()는 정수, 논리값, 실수, 문자, 객체 등 여러 자료형을 문자열로 바꾼다. 문자 배열을 전달하면 배열의 문자들을 연결한 문자열이 만들어진다. 반면 일반 배열 객체를 Object로 전달하면 배열 원소 자체가 아니라 그 객체의 문자열 표현이 반환될 수 있다.

그 밖에 startsWith(String prefix)는 지정한 접두어로 시작하는지, endsWith(String suffix)는 지정한 접미어로 끝나는지 확인한다. toCharArray()는 문자열을 문자 배열로 변환한다.

String.valueOf(123)의 결과는 문자열 "123"이고, String.valueOf(new char[]{'J','a','v','a'})의 결과는 "Java"이다.

제6장 StringBuffer 클래스

1. 변경 가능한 문자열

StringBuffer는 객체를 만든 뒤에도 내부 문자열을 변경할 수 있는 가변 클래스이다. 문자열을 반복해서 추가하거나 삽입·삭제·교체할 때마다 새 객체를 만들 필요가 없으므로, 내용 변경이 많은 작업에서 String보다 효율적일 수 있다. 내부적으로는 문자열 저장 공간인 버퍼를 사용한다.

기본 생성자 StringBuffer()는 초기 버퍼 크기가 16인 객체를 만든다. StringBuffer(int length)는 지정한 크기의 버퍼를 준비하고, StringBuffer(String str)는 문자열로 초기화하면서 일반적으로 문자열 길이에 16을 더한 크기의 버퍼를 준비한다.

2. 용량·길이·검색·추출

capacity()는 현재 버퍼의 저장 용량을 반환하고, length()는 실제로 저장된 문자열의 길이를 반환한다. 두 값은 서로 다를 수 있다. charAt()은 지정 위치의 문자를, indexOf()는 부분 문자열의 시작 위치를, substring(start, end)는 start부터 end 직전까지의 문자열을 반환한다.

3. 내용 변경 메소드

append()는 버퍼 끝에 문자열이나 문자를 추가하고, delete(start, end)는 start부터 end 직전까지 삭제한다. insert(offset, s)는 지정 위치에 문자열을 삽입하며, replace(start, end, s)는 구간을 새 문자열로 교체한다. reverse()는 저장된 문자 순서를 반대로 바꾼다.

StringBuffer s = new StringBuffer("start");
System.out.println(s.capacity()); // 21
System.out.println(s.length());   // 5
System.out.println(s.append("le")); // startle

구별: capacity()는 확보한 버퍼 크기이고 length()는 실제 문자열 길이이다. 문자열로 생성한 StringBuffer의 초기 용량은 문자열 길이보다 크게 확보된다.

제7장 StringBuffer와 StringBuilder의 활용

1. 반복 연결에서 String이 비효율적인 이유

String은 불변 객체이므로 반복문에서 str = str + value;를 계속 수행하면 기존 String을 직접 늘리는 것이 아니라 매번 새로운 String 객체가 만들어진다. 연결 횟수가 많아지면 사용이 끝난 임시 객체가 계속 생겨 메모리가 낭비되고 실행 시간도 길어질 수 있다.

같은 상황에서 StringBuffer나 StringBuilder의 append()를 사용하면 하나의 가변 객체 내부 버퍼에 내용을 누적할 수 있다. 강의의 실행 예에서도 단순 String 연결보다 StringBuffer와 StringBuilder를 사용한 연결이 훨씬 빠르게 나타난다. 실제 시간은 실행 환경에 따라 달라지지만, 반복 변경에서 가변 문자열 클래스가 유리하다는 점이 핵심이다.

2. StringBuffer와 StringBuilder

두 클래스는 문자열을 변경하는 방식과 주요 사용법이 비슷하다. StringBuffer는 여러 실행 흐름에서 안전하게 사용할 수 있도록 동기화를 고려한 클래스이고, StringBuilder는 동기화 부담을 줄여 일반적으로 단일 스레드의 문자열 조립에서 더 빠를 수 있다. 강의 예제에서는 같은 문자열을 여러 번 append하여 세 방식의 수행 시간을 비교한다.

클래스변경 가능 여부주요 사용 상황
String불변내용이 자주 바뀌지 않는 문자열
StringBuffer가변문자열 변경이 많고 동기화가 필요한 상황
StringBuilder가변단일 스레드에서 빠르게 문자열을 조립하는 상황

제8장 포장 클래스

1. 기본형을 객체로 표현하기

포장 클래스는 기본형 데이터를 참조형 객체로 표현하기 위한 클래스이다. 기본형과 대응하는 포장 클래스는 byte-Byte, short-Short, int-Integer, long-Long, float-Float, double-Double, char-Character, boolean-Boolean이다. 포장 클래스 이름은 일반 클래스처럼 대문자로 시작하며, int와 char의 포장 클래스 이름이 각각 Integer와 Character라는 점에 주의한다.

메소드의 인자로 객체가 필요할 때, Number의 자식 클래스가 제공하는 공통 기능을 사용할 때, 포장 클래스가 제공하는 상수와 다양한 변환 메소드를 이용할 때 유용하다. 숫자를 나타내는 Byte, Short, Integer, Long, Float, Double은 추상 클래스 Number의 자식 클래스이다.

2. Number 클래스와 Double의 예

Number 계열 포장 객체는 doubleValue()처럼 값을 특정 기본형으로 꺼내는 메소드를 제공한다. Double의 toString()은 객체의 값을 문자열로 표현하며, Double.valueOf(double)Double.valueOf(String)은 Double 객체를 만든다. Double.parseDouble(String)은 문자열을 기본형 double 값으로 변환한다.

반환형 구별: Integer.parseInt("123")는 기본형 int를 반환하고, Integer.valueOf("123")Integer 객체를 반환한다.

제9장 문자열 변환과 박싱·언박싱

1. String과 기본형 사이의 변환

문자열을 기본형 숫자로 바꿀 때 포장 클래스의 정적 메소드를 이용한다. 예를 들어 Integer.parseInt("123")은 int 값 123을, Long.parseLong("1234")는 long 값 1234를 반환한다. 반대로 기본형 값을 문자열로 바꿀 때는 Integer.toString(4), Long.toString(5L), String.valueOf(123) 등을 사용할 수 있다.

2. 박싱과 자동 박싱

박싱은 기본형 데이터를 대응하는 포장 클래스 객체로 바꾸는 것이다. 예를 들어 double 값을 Double 객체로 바꿀 수 있다. 생성자를 사용하거나 Double.valueOf(10.4)를 호출하는 명시적 방식이 있으며, Double radius = 2.59;처럼 기본형 값을 포장 클래스 참조에 대입하면 컴파일러가 자동으로 변환하는 자동 박싱이 일어난다.

3. 언박싱과 자동 언박싱

언박싱은 포장 클래스 객체에서 기본형 값을 꺼내는 것이다. Double 객체의 값을 꺼낼 때 doubleValue()를 사용할 수 있다. double r = radius;처럼 포장 객체를 기본형 변수에 대입하거나 기본형 인자가 필요한 연산에 사용하면 자동 언박싱이 적용된다. 예를 들어 Integer.valueOf(3) % 2에서는 Integer 객체가 int로 자동 변환되어 나머지 연산에 참여한다.

변환방향
박싱기본형 → 포장 객체Integer.valueOf(3)
자동 박싱기본형 → 포장 객체Integer n = 3;
언박싱포장 객체 → 기본형n.intValue()
자동 언박싱포장 객체 → 기본형int x = n;

제10장 System 클래스와 표준 입출력

1. System 클래스의 기능

System 클래스는 자바 플랫폼과 시스템에 관련된 기능을 제공한다. 모든 멤버가 static이므로 객체를 생성하지 않고 클래스 이름으로 바로 사용한다. 표준 입출력 객체를 제공하고, JVM 또는 운영체제의 속성과 시스템 환경 변수를 조회·제어하며, 배열 복사, 시간 조회, 프로그램 종료 등의 기능을 지원한다.

2. 표준 입출력 필드

System.inInputStream 유형의 표준 입력 스트림으로, 일반적으로 키보드 입력을 받을 때 사용한다. System.outPrintStream 유형의 표준 출력 스트림으로 화면에 일반 데이터를 출력한다. System.err도 PrintStream 유형이지만 오류 메시지를 출력하는 표준 오류 스트림이다.

필드유형용도
System.inInputStream키보드 등에서 표준 입력을 받는다.
System.outPrintStream일반 데이터를 표준 출력으로 보낸다.
System.errPrintStream오류 메시지를 표준 오류 출력으로 보낸다.

3. System.in.read()로 문자 입력받기

System.in.read()는 입력 스트림에서 1바이트를 읽어 정수로 반환하며 입출력 예외를 처리해야 한다. 문자로 사용할 때는 (char)로 변환할 수 있다. 사용자가 문자 뒤에 Enter를 누르면 실행 환경에 따라 문자 다음에 캐리지 리턴과 줄 바꿈 문자도 입력 스트림에 남을 수 있다. 강의 예에서는 이 값들이 각각 13과 10으로 읽히며, available()은 즉시 읽을 수 있는 바이트 수를 보여 준다.

char input = (char) System.in.read();
System.out.println(input);

제11장 BufferedReader로 한 줄 입력받기

1. 바이트 입력을 문자 입력으로 연결하기

여러 자리 숫자처럼 한 줄 전체를 입력받으려면 InputStreamReaderBufferedReader를 연결할 수 있다. System.in은 바이트 입력 스트림이므로 InputStreamReader가 이를 문자 스트림으로 변환하고, BufferedReader가 버퍼를 이용해 효율적으로 문자를 읽으며 readLine()을 제공한다.

import java.io.*;

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(isr);
System.out.print("Input a number: ");
String line = reader.readLine();
int value = Integer.parseInt(line);
System.out.println(value);
reader.close();

readLine()의 결과는 String이므로 정수 계산에 사용하려면 Integer.parseInt()로 변환한다. 입력 과정에서는 IOException이 발생할 수 있으므로 예외를 처리하거나 메소드 선언부에 throws IOException을 적어야 한다. 사용이 끝난 BufferedReader는 close()로 닫는다.

처리 흐름은 System.in의 바이트 입력 → InputStreamReader의 문자 변환 → BufferedReader의 한 줄 읽기 → Integer.parseInt()의 숫자 변환 순서로 이해하면 된다.

핵심 개념 정리

java.lang 패키지

  • 자바의 기본 클래스를 제공하며 별도의 import 문 없이 사용할 수 있다.
  • Object는 모든 클래스의 최상위 조상이며 공통 메소드를 제공한다.
  • toString()은 문자열 표현, equals()는 동등성 비교, clone()은 객체 복제, getClass()는 실행 중 클래스 정보 확인에 사용한다.

문자열 클래스

  • String은 불변 객체이므로 변환 결과가 새로운 객체로 만들어진다.
  • StringBuffer와 StringBuilder는 내용 변경이 가능한 가변 문자열 클래스이다.
  • 문자열 비교에는 equals(), 검색에는 indexOf()·lastIndexOf(), 추출에는 charAt()·substring()을 활용한다.

포장 클래스와 System

  • 포장 클래스는 기본형 값을 객체로 표현하며 Number 계열은 공통 숫자 변환 기능을 제공한다.
  • 박싱은 기본형에서 포장 객체로, 언박싱은 포장 객체에서 기본형으로 변환하는 것이다.
  • System.in은 표준 입력, System.out은 표준 출력, System.err는 표준 오류 출력이다.
  • 한 줄 입력은 InputStreamReader와 BufferedReader를 연결해 받고, 숫자는 parseInt() 등으로 변환할 수 있다.

최종 정리: 8강의 중심은 객체와 문자열을 다루는 자바의 공통 기반을 이해하는 것이다. Object 메소드의 목적, String의 불변성과 StringBuffer의 가변성, 포장 객체와 기본형 사이의 변환, System 표준 입출력의 유형과 입력 처리 흐름을 서로 연결해 정리하면 응용 문제에도 대응할 수 있다.

예상문제 20선

1. java.lang 패키지에 관한 설명으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
java.lang은 자바의 기본 클래스를 제공하며 컴파일러가 자동으로 사용할 수 있게 하므로 별도의 import 문이 필요하지 않다.

2. 자바에서 모든 클래스의 최상위 조상은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
부모 클래스를 명시하지 않은 클래스도 자동으로 Object를 상속하며 Object의 공통 메소드를 물려받는다.

3. 객체를 의미 있는 문자열로 표현하도록 재정의하는 Object의 메소드는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
toString()은 객체를 나타내는 문자열을 반환하며, 자식 클래스에서 상태를 잘 보여 주도록 재정의할 수 있다.

4. Object에 정의된 equals()의 기본 동작에 가장 가까운 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
Object의 기본 equals()는 참조의 동일성을 비교한다. String과 Integer 등은 값이나 내용을 비교하도록 이를 재정의한다.

5. Object의 clone()을 정상적으로 사용할 수 있도록 클래스가 구현해야 하는 인터페이스는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
Cloneable을 구현하지 않은 객체에 clone()을 적용하면 CloneNotSupportedException이 발생할 수 있다.

6. 현재 객체의 실행 중 클래스 정보를 가진 Class 객체를 반환하는 메소드는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
getClass()가 반환한 Class 객체를 이용하면 클래스 이름, 부모 클래스, 선언된 필드와 메소드 등을 조사할 수 있다.

7. String 클래스의 특성으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
String은 불변이므로 replace()나 대소문자 변환 등의 결과는 원본 수정이 아니라 새 String 객체로 만들어진다.

8. 문자열의 실제 내용을 비교할 때 가장 적절한 메소드는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
String의 equals()는 문자열 내용을 비교한다. ==는 두 참조가 같은 객체를 가리키는지를 비교한다.

9. substring(2, 5)가 추출하는 범위에 대한 설명으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
두 인자를 받는 substring()은 beginIndex를 포함하고 endIndex는 포함하지 않는다.

10. 부분 문자열을 찾지 못한 indexOf()가 반환하는 값은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
indexOf()와 lastIndexOf()는 대상 문자열을 찾지 못하면 -1을 반환한다.

11. 문자열을 문자 배열로 변환하는 String 메소드는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
toCharArray()는 문자열을 각 문자로 이루어진 char 배열로 바꾸어 반환한다.

12. new StringBuffer("start") 객체의 초기 capacity 값은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
문자열로 StringBuffer를 만들면 초기 버퍼 용량은 문자열 길이 5에 여유 공간 16을 더한 21이다.

13. StringBuffer에서 현재 버퍼 끝에 내용을 추가하는 메소드는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
append()는 StringBuffer 또는 StringBuilder의 현재 내용 뒤에 문자나 문자열 등을 추가한다.

14. 반복문에서 문자열을 매우 많이 연결할 때 String보다 StringBuffer가 유리한 주된 이유는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
String은 불변이어서 연결 때마다 새 객체가 생길 수 있지만 StringBuffer는 하나의 가변 버퍼에 내용을 누적한다.

15. 기본형 int에 대응하는 포장 클래스는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
int의 포장 클래스는 Integer이며, char의 포장 클래스는 Character이다.

16. Integer.parseInt("123")의 반환값과 자료형을 올바르게 설명한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
parseInt()는 숫자 형식 문자열을 분석해 기본형 int를 반환한다. Integer 객체가 필요하면 valueOf()를 사용할 수 있다.

17. 포장 클래스 객체를 대응하는 기본형 값으로 변환하는 것을 무엇이라 하는가?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
언박싱은 포장 객체에서 기본형 값을 꺼내는 변환이다. 반대 방향은 박싱이다.

18. System 클래스의 표준 입력 스트림 필드는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
System.in은 InputStream 유형의 표준 입력 필드이다. System.out과 System.err는 PrintStream 유형의 출력 필드이다.

19. 표준 오류 메시지를 출력할 때 사용하는 필드는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
System.err는 PrintStream 유형의 표준 오류 출력 필드로 오류 메시지를 표시할 때 사용한다.

20. BufferedReader로 읽은 한 줄의 숫자 문자열을 int로 변환하는 메소드는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
readLine()은 String을 반환하므로 Integer.parseInt()로 숫자 문자열을 기본형 int로 변환한다.

댓글