본문 바로가기
대학강의정리/24.1 자바

chap8. 기본 패키지 연습문제

by 피스타0204 2024. 6. 10.

1. 다음은 자바의 기본 패키지에 대한 설명이다. T, F를 판별하시오.

(1) 자바의 라이브러리는 개발자가 편리하게 사용할 수 있도록 패키지 또는 모듈을 묶은 파일이다.

(2)패키지는 상호 관련 있는 클래스와 인터페이스를 한곳에 묶어 놓은 것이고 모듈은 밀접한 관계가 있는 패키지와 리소스를 묶어 놓은 것이다. JDK를 설치하면 jmods 폴더에 jmod 파일을 제공하는데 jmod 파일이 모듈 파일이다.

(3) JDK 8까지는 개발자가 편리하게 프로그래밍할 수 있도록 기본 패키지를 rt.jar 파일로 제공하고 DK 9부터는 jmod 파일을 통하여 필요한 패키지를 제공한다.

(4) 자바가 제공하는 기본 패키지는 java로 시작하며 확장 패키지는 javax로 시작한다.

(5) 자바의 클래스들은 기본적으로 java.lang의 Object클래스를 상속한 클래스이다.

(6) Calendar c= new Calender();은 옳은 코드이다.

(7) import문보다 package문을 먼저 쓴다.

(8) Integer i = Integer.parseInteger("10");으로 i에 10이 저장된다.

(9) Int, Character, Long, Float는 자바가 제공하는 포장 클래스이다.

10) Class.forName() 메서드로 Class 객체를 얻을 수 있다.

더보기

1) T

2) T

3) T

4) T

5) T

6) F, Calendar c= Calender.getInstance(); 로 객체를 생성한다.

7) T, 패키지문은 가장 위에 선언되어야 한다.

8) F, Integer i = Integer.parseInt("10");여야 한다.

9) F, Int가 아니라 Integer이다.

10) T

 

 

2. 다음 코드의 출력을 적으시오.

class Mouse {
	String name;

	public Mouse(String name) {
		this.name = name;
	}
}

class Keyboard {
	String name;

	public Keyboard(String name) {
		this.name = name;
	}

	public boolean equals(Object obj) {
		if (obj instanceof Keyboard) {
			Keyboard k = (Keyboard) obj;
			if (name.equals(k.name))
				return true;
		}
		return false;
	}

	public String toString() {
		return "키보드입니다.";
	}
}

public class Main {
	public static void main(String[] args) {
		Mouse m1 = new Mouse("Logitech");
		Mouse m2 = new Mouse("Logitech");
		Mouse m3 = m1;
		Keyboard k1 = new Keyboard("Microsoft");
		Keyboard k2 = new Keyboard("Microsoft");

		System.out.println(m1.toString());
		System.out.println(m1);

		System.out.println(k1.toString());
		System.out.println(k1);

		System.out.println(m1.equals(m2));
		System.out.println(m1.equals(m3));
		System.out.println(k1.equals(k2));
	}
}
더보기

Mouse@1e81f4dc  //toString은 그 객체의 주소? 문자열을 반환한다.
Mouse@1e81f4dc  //그 객체 자체를 출력하면 toString결과가 나온다.
키보드입니다. //toString도 오버로딩이 가능하다.
키보드입니다. //그 객체 자체를 출력하면 toString결과가 나온다.
false //Object 객체에서 상속받은 equals는 서로 다른 객체일 때 false를 돌려준다.
true 
true //오버로딩된 equals는 이름만 같으면 같은 것으로 취급한다.

3. 다음 코드의 출력을 적으시오.

class Keyboard {
	String name;

	public Keyboard(String name) {
		this.name = name;
	}

	public boolean equals(Object obj) {
		if (obj instanceof Keyboard) {
			Keyboard k = (Keyboard) obj;
			if (name.equals(k.name))
				return true;
		}
		return false;
	}

	public String toString() {
		return "키보드입니다.";
	}
}

public class Main{
	public static void main(String[] args) {
		Keyboard k = new Keyboard("Logitech");

		Class c = k.getClass();
		System.out.println(c.getName());
		System.out.println(c.getSimpleName());
		System.out.println(c.getTypeName());
	}
}
더보기

Keyboard
Keyboard
Keyboard

//getClass는 그 Class 객체를 반환한다.

4. 다음 함수의 결과를 예상하여라.

public class Main {
	public static void main(String[] args) {
		System.out.println("Math.pow(2, 8) : " + Math.pow(2, 8));

		System.out.println("Math.random() : " + Math.random());

		System.out.println("Math.sin(Math.PI) : " + Math.sin(Math.PI));

		System.out.println("Math.min(10, 20) : " + Math.min(10, 20));
	}
}
더보기

//결과 Math.pow(2, 8) : 256.0

Math.random() : 0.6471520648945301 //0~1 사이의 랜덤 숫자

Math.sin(Math.PI) : 1.2246467991473532E-16  

Math.min(10, 20) : 10

5. 다음 함수의 결과를 예상하여라.

package main;

public class Main {
	public static void main(String[] args) {
		int[] src = new int[] { 1, 2, 3, 4, 5, 6 };
		int[] dst = { 100, 200, 300, 400, 500, 600, 700 };
		
		System.arraycopy(src, 2, dst, 3, 4);
		for (int i = 0; i < dst.length; i++) {
			System.out.print(dst[i] + " ");
		}
		System.out.println();

		System.out.println(System.currentTimeMillis()> System.nanoTime());
		System.out.println(System.getenv("JAVA_HOME"));
		System.out.println(System.getProperty("os.name"));
		System.out.println(System.nanoTime());
	}
}
더보기

100 200 300 3 4 5

false //1714478552237 현재시각을 밀리초단위로 반환 // 279594775104400 현재 시각을 나노초 단위로 반환

null //지정된 환경변수값

Windows 10 

 

6. 1~10사이의 숫자를 출력하는 코드이다. 빈칸을 채우시오.

package main;
import java.time.LocalDateTime;
import java.util.Random;

public class Main {
	public static void main(String[] args) {
		--------------------------
		-------------------------
		for(int j=0;j<5;j++)
		{
			for (int i = 0; i < 4; i++)
				--------------------------------
			System.out.println();
		}
		try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
		
	}
}
더보기
package main;
import java.time.LocalDateTime;
import java.util.Random;

public class Main {
	public static void main(String[] args) {
		Random r = new Random(); //시간을 초기값으로 지정
		r.setSeed(System.currentTimeMillis());
		for(int j=0;j<5;j++)
		{
			for (int i = 0; i < 4; i++)
				System.out.print(r.nextInt(10)+1 + " ");
			System.out.println();
		}
		try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
		
	}
}

7. 이 코드의 실행 결과는 무엇이며 그 이유는? 만약 논리적으로 이상한 부분이 있다면 옳게 고치시오.

Double d1 = 100.0;
Double d2 = 100.0;
System.out.println(d1==d2);
더보기

false

== 비교연산자는 객체의 주소값을 비교하기 때문에 다르다.

d1.equals(d2); 로 비교해야 한다. equals는 객체타입이 같다면 안에 값을 비교한다.