본문 바로가기

Certification/OCAJP

OCAJP 준비 (Q201 - Q218)

1.

class Vehicle {
    Vehicle() {
        System.out.println("Vehicle");
    }
}

class Bus extends Vehicle {
    Bus() {
        System.out.println("Bus");
    }
}

public class Transport {
    public static void main(String[] args) {
        Vehicle v = new Bus();
    }
}

  1. 생성자 호출
    • 객체를 생성할 때 자동으로 호출됨
    • 생성자 호출을 막으려면 객체를 생성하지 않아야 함.
    • 생성자는 호출을 안 하고 객체를 생성하는 방법은 XX (Java는 기본적으로 생성자를 반드시 호출해야만 객체를 생성할 수 있게 설계되어 있음.)
  2. 일반 메서드 호출
    • 객체를 생성한 후, 명시적으로 메서드를 호출해야 실행됨.
    • 객체를 생성했다고 해서 일반 메서드가 자동으로 실행되는 일은 없음.

2.

int price = 1000;
int qty = 2;
String grade = "2";
double discount = 0.0;

switch (grade) {
    case "1":
        discount = price * 0.1;
        break;
    case "2":
        discount = price * 0.5;
        continue; // 핵심
    default:
        System.out.println("Thank You!");
}
System.out.println(discount);

 

 switch 문에서 case 블록에 break가 없을 경우, 다음 블록으로 계속 진행. 반복문은 아니지만, 

switch-case는 **연속적인 흐름(flow)**을 가지고 있어서, 명시적으로 break를 써주지 않으면

아래로 "떨어져서 실행(fall-through)" 

 

만약 default가 grade case "2"보다 위에 있다면 호출되지 않음

 

3.

A. It is invoked by JRE (OOO) 정덥!

 

B. It is a final method >> final로 선언되지 않아도 됨

 

C. It returns true if it is executed successfully at run time
>> main() 메서드는 항상 void 반환형을 가져야 하므로 값을 반환하지 않습니다.

 

D. It must be defined within a public class

>> : main() 메서드는 public static void main(String[] args) 형태로 정의되어야 하지만, 해당 메서드가 꼭 public class 내부에 정의될 필요는 XXXX

 

4.

indexOf(String str, int fromIndex) 메서드는 지정된 문자열 str이 주어진 문자열 내에서 시작되는 위치를 반환

검색은 fromIndex에서 시작

 

5.

// Product 클래스: 상품 정보를 담는 클래스
class Product {
    String name; // 상품 이름
    Double price; // 상품 가격
}

// Cart 클래스: 장바구니 정보를 담는 클래스
class Cart {
    Product p; // 장바구니에 담긴 상품
    double totalAmount; // 총 금액
}

// Shop 클래스: main 메서드를 포함한 실행 클래스
public class Shop {
    public static void main(String[] args) {
        // Cart 객체 생성
        Cart c = new Cart();

        // Cart 객체의 필드 출력
        System.out.println(c.p + ":" + c.totalAmount);
    }
}

 

만약 Cart 객체를 만들었을때 c.p를 초기화 하고 싶다면

public Cart(Product p, double totalAmount) {
    this.p = p;
    this.totalAmount = totalAmount;
}

이런식으로 생성자를 만들어 주어 초기화를 시켜야함.

 

>>> 초기화 되지 않았기 때문에 null:0.0 출력

 

6.

반복문은 메서드 내부에서만 사용가능!!!!! 
클래스 수준에서는 직접적인 실행 블록(for, while, if 등)을 작성할 수 XXXX

 

7.

package p1;

public class App {
    public static void main(String[] args) {
        System.out.println("Java");
    }
}
package p1.p2;

public class Test {}
  • A. The App.class file is stored within the p1 folder. The Test.class file is stored within the p2 sub-folder of p1.
    >>>>>선택지 A에서는 App.class, Test.class와 같은 **컴파일된 파일(class 파일)**
              → **문제에서는 소스 코드(.java 파일)**를 기준
  • B. The App class is accessible within the Test class without an import statement.
    >>> import p1.App을 추가

  • C. import p1.App; is used to access the App class within the Test class. OOOO
  • D. It is optional to have the package statement as the first line of class definitions.
    >>>>> 패키지 선언은 파일의 첫 번째 줄에 있어야 함

8.

Predicate란?

Java의 Predicate<T>는 조건을 평가하고 Boolean 값을 반환하는 함수형 인터페이스

  • 람다식 (n) -> n % 2 == 0;는 숫자가 짝수인지 확인하는 조건
  • .test(T t) 메서드를 사용하여 조건을 평가하고, 결과로 true 또는 false를 반환
Predicate<Integer> p = (n) -> n % 2 == 0;

p.test(100) → 100 % 2 == 0이므로 true를 반환
p.test(101) → 101 % 2 == 0이 아니므로 false를 반환

'Certification > OCAJP' 카테고리의 다른 글

OCAJP 복습(1)  (1) 2024.12.05
OCAJP 준비 (Q219 - Q236)  (1) 2024.11.28
OCAJP 준비 (Q177 - Q200)  (0) 2024.11.26
OCAJP 준비 (Q166 - Q176)  (0) 2024.11.25
OCAJP 준비 (Q146 - Q165)  (0) 2024.11.21