[2025年08月]更新の1z0-830認定実際の問題を提供します [Q22-Q40]

Share

[2025年08月]更新の1z0-830認定実際の問題を提供します

更新されたのは1z0-830問題集PDFで1z0-830リアル有効なブレーン問題集には85問があります!

質問 # 22
Given:
java
List<String> l1 = new ArrayList<>(List.of("a", "b"));
List<String> l2 = new ArrayList<>(Collections.singletonList("c"));
Collections.copy(l1, l2);
l2.set(0, "d");
System.out.println(l1);
What is the output of the given code fragment?

  • A. [d, b]
  • B. An IndexOutOfBoundsException is thrown
  • C. An UnsupportedOperationException is thrown
  • D. [d]
  • E. [c, b]
  • F. [a, b]

正解:E

解説:
In this code, two lists l1 and l2 are created and initialized as follows:
* l1 Initialization:
* Created using List.of("a", "b"), which returns an immutable list containing the elements "a" and
"b".
* Wrapped with new ArrayList<>(...) to create a mutable ArrayList containing the same elements.
* l2 Initialization:
* Created using Collections.singletonList("c"), which returns an immutable list containing the single element "c".
* Wrapped with new ArrayList<>(...) to create a mutable ArrayList containing the same element.
State of Lists Before Collections.copy:
* l1: ["a", "b"]
* l2: ["c"]
Collections.copy(l1, l2):
The Collections.copy method copies elements from the source list (l2) into the destination list (l1). The destination list must have at least as many elements as the source list; otherwise, an IndexOutOfBoundsException is thrown.
In this case, l1 has two elements, and l2 has one element, so the copy operation is valid. After copying, the first element of l1 is replaced with the first element of l2:
* l1 after copy: ["c", "b"]
l2.set(0, "d"):
This line sets the first element of l2 to "d".
* l2 after set: ["d"]
Final State of Lists:
* l1: ["c", "b"]
* l2: ["d"]
The System.out.println(l1); statement outputs the current state of l1, which is ["c", "b"]. Therefore, the correct answer is C: [c, b].


質問 # 23
Given:
java
public class ExceptionPropagation {
public static void main(String[] args) {
try {
thrower();
System.out.print("Dom Perignon, ");
} catch (Exception e) {
System.out.print("Chablis, ");
} finally {
System.out.print("Saint-Emilion");
}
}
static int thrower() {
try {
int i = 0;
return i / i;
} catch (NumberFormatException e) {
System.out.print("Rose");
return -1;
} finally {
System.out.print("Beaujolais Nouveau, ");
}
}
}
What is printed?

  • A. Beaujolais Nouveau, Chablis, Dom Perignon, Saint-Emilion
  • B. Beaujolais Nouveau, Chablis, Saint-Emilion
  • C. Rose
  • D. Saint-Emilion

正解:B

解説:
* Analyzing the thrower() Method Execution
java
int i = 0;
return i / i;
* i / i evaluates to 0 / 0, whichthrows ArithmeticException (/ by zero).
* Since catch (NumberFormatException e) doesnot matchArithmeticException, it is skipped.
* The finally block always executes, printing:
nginx
Beaujolais Nouveau,
* The exceptionpropagates backto main().
* Handling the Exception in main()
java
try {
thrower();
System.out.print("Dom Perignon, ");
} catch (Exception e) {
System.out.print("Chablis, ");
} finally {
System.out.print("Saint-Emilion");
}
* Since thrower() throws ArithmeticException, it is caught by catch (Exception e).
* "Chablis, "is printed.
* Thefinally block always executes, printing "Saint-Emilion".
* Final Output
nginx
Beaujolais Nouveau, Chablis, Saint-Emilion
Thus, the correct answer is:Beaujolais Nouveau, Chablis, Saint-Emilion
References:
* Java SE 21 - Exception Handling
* Java SE 21 - finally Block Execution


質問 # 24
Given:
java
var array1 = new String[]{ "foo", "bar", "buz" };
var array2[] = { "foo", "bar", "buz" };
var array3 = new String[3] { "foo", "bar", "buz" };
var array4 = { "foo", "bar", "buz" };
String array5[] = new String[]{ "foo", "bar", "buz" };
Which arrays compile? (Select 2)

  • A. array2
  • B. array5
  • C. array3
  • D. array4
  • E. array1

正解:B、E

解説:
In Java, array initialization can be performed in several ways, but certain syntaxes are invalid and will cause compilation errors. Let's analyze each declaration:
* var array1 = new String[]{ "foo", "bar", "buz" };
This is a valid declaration. The var keyword allows the compiler to infer the type from the initializer. Here, new String[]{ "foo", "bar", "buz" } creates an anonymous array of String with three elements. The compiler infers array1 as String[]. This syntax is correct and compiles successfully.
* var array2[] = { "foo", "bar", "buz" };
This declaration is invalid. While var can be used for type inference, appending [] after var is not allowed.
The correct syntax would be either String[] array2 = { "foo", "bar", "buz" }; or var array2 = new String[]{
"foo", "bar", "buz" };. Therefore, this line will cause a compilation error.
* var array3 = new String[3] { "foo", "bar", "buz" };
This declaration is invalid. In Java, when specifying the size of the array (new String[3]), you cannot simultaneously provide an initializer. The correct approach is either to provide the size without an initializer (new String[3]) or to provide the initializer without specifying the size (new String[]{ "foo", "bar", "buz" }).
Therefore, this line will cause a compilation error.
* var array4 = { "foo", "bar", "buz" };
This declaration is invalid. The array initializer { "foo", "bar", "buz" } can only be used in an array declaration when the type is explicitly provided. Since var relies on type inference and there's no explicit type provided here, this will cause a compilation error. The correct syntax would be String[] array4 = { "foo",
"bar", "buz" };.
* String array5[] = new String[]{ "foo", "bar", "buz" };
This is a valid declaration. Here, String array5[] declares array5 as an array of String. The initializer new String[]{ "foo", "bar", "buz" } creates an array with three elements. This syntax is correct and compiles successfully.
Therefore, the declarations that compile successfully are array1 and array5.
References:
* Java SE 21 & JDK 21 - Local Variable Type Inference
* Java SE 21 & JDK 21 - Arrays


質問 # 25
Given:
java
DoubleSummaryStatistics stats1 = new DoubleSummaryStatistics();
stats1.accept(4.5);
stats1.accept(6.0);
DoubleSummaryStatistics stats2 = new DoubleSummaryStatistics();
stats2.accept(3.0);
stats2.accept(8.5);
stats1.combine(stats2);
System.out.println("Sum: " + stats1.getSum() + ", Max: " + stats1.getMax() + ", Avg: " + stats1.getAverage()); What is printed?

  • A. An exception is thrown at runtime.
  • B. Sum: 22.0, Max: 8.5, Avg: 5.0
  • C. Compilation fails.
  • D. Sum: 22.0, Max: 8.5, Avg: 5.5

正解:D

解説:
The DoubleSummaryStatistics class in Java is part of the java.util package and is used to collect and summarize statistics for a stream of double values. Let's analyze how the methods work:
* Initialization and Data Insertion
* stats1.accept(4.5); # Adds 4.5 to stats1.
* stats1.accept(6.0); # Adds 6.0 to stats1.
* stats2.accept(3.0); # Adds 3.0 to stats2.
* stats2.accept(8.5); # Adds 8.5 to stats2.
* Combining stats1 and stats2
* stats1.combine(stats2); merges stats2 into stats1, resulting in one statistics summary containing all values {4.5, 6.0, 3.0, 8.5}.
* Calculating Output Values
* Sum= 4.5 + 6.0 + 3.0 + 8.5 = 22.0
* Max= 8.5
* Average= (22.0) / 4 = 5.5
Thus, the output is:
yaml
Sum: 22.0, Max: 8.5, Avg: 5.5
References:
* Java SE 21 & JDK 21 - DoubleSummaryStatistics
* Java SE 21 - Streams and Statistical Operations


質問 # 26
Given:
java
int post = 5;
int pre = 5;
int postResult = post++ + 10;
int preResult = ++pre + 10;
System.out.println("postResult: " + postResult +
", preResult: " + preResult +
", Final value of post: " + post +
", Final value of pre: " + pre);
What is printed?

  • A. postResult: 15, preResult: 16, Final value of post: 5, Final value of pre: 6
  • B. postResult: 16, preResult: 16, Final value of post: 6, Final value of pre: 6
  • C. postResult: 15, preResult: 16, Final value of post: 6, Final value of pre: 6
  • D. postResult: 16, preResult: 15, Final value of post: 6, Final value of pre: 5

正解:C

解説:
* Understanding post++ (Post-increment)
* post++uses the value first, then increments it.
* postResult = post++ + 10;
* post starts as 5.
* post++ returns 5, then post is incremented to 6.
* postResult = 5 + 10 = 15.
* Final value of post after this line is 6.
* Understanding ++pre (Pre-increment)
* ++preincrements the value first, then uses it.
* preResult = ++pre + 10;
* pre starts as 5.
* ++pre increments pre to 6, then returns 6.
* preResult = 6 + 10 = 16.
* Final value of pre after this line is 6.
Thus, the final output is:
yaml
postResult: 15, preResult: 16, Final value of post: 6, Final value of pre: 6 References:
* Java SE 21 - Operators and Expressions
* Java SE 21 - Arithmetic Operators


質問 # 27
Given:
java
var frenchCities = new TreeSet<String>();
frenchCities.add("Paris");
frenchCities.add("Marseille");
frenchCities.add("Lyon");
frenchCities.add("Lille");
frenchCities.add("Toulouse");
System.out.println(frenchCities.headSet("Marseille"));
What will be printed?

  • A. [Paris]
  • B. Compilation fails
  • C. [Paris, Toulouse]
  • D. [Lyon, Lille, Toulouse]
  • E. [Lille, Lyon]

正解:E

解説:
In this code, a TreeSet named frenchCities is created and populated with the following cities: "Paris",
"Marseille", "Lyon", "Lille", and "Toulouse". The TreeSet class in Java stores elements in a sorted order according to their natural ordering, which, for strings, is lexicographical order.
Sorted Order of Elements:
When the elements are added to the TreeSet, they are stored in the following order:
* "Lille"
* "Lyon"
* "Marseille"
* "Paris"
* "Toulouse"
headSet Method:
The headSet(E toElement) method of the TreeSet class returns a view of the portion of this set whose elements are strictly less than toElement. In this case, frenchCities.headSet("Marseille") will return a subset of frenchCities containing all elements that are lexicographically less than "Marseille".
Elements Less Than "Marseille":
From the sorted order, the elements that are less than "Marseille" are:
* "Lille"
* "Lyon"
Therefore, the output of the System.out.println statement will be [Lille, Lyon].
Option Evaluations:
* A. [Paris]: Incorrect. "Paris" is lexicographically greater than "Marseille".
* B. [Paris, Toulouse]: Incorrect. Both "Paris" and "Toulouse" are lexicographically greater than
"Marseille".
* C. [Lille, Lyon]: Correct. These are the elements less than "Marseille".
* D. Compilation fails: Incorrect. The code compiles successfully.
* E. [Lyon, Lille, Toulouse]: Incorrect. "Toulouse" is lexicographically greater than "Marseille".


質問 # 28
Given:
java
var hauteCouture = new String[]{ "Chanel", "Dior", "Louis Vuitton" };
var i = 0;
do {
System.out.print(hauteCouture[i] + " ");
} while (i++ > 0);
What is printed?

  • A. An ArrayIndexOutOfBoundsException is thrown at runtime.
  • B. Chanel
  • C. Chanel Dior Louis Vuitton
  • D. Compilation fails.

正解:B

解説:
* Understanding the do-while Loop
* The do-while loopexecutes at least oncebefore checking the condition.
* The condition i++ > 0 increments iafterchecking.
* Step-by-Step Execution
* Iteration 1:
* i = 0
* Prints: "Chanel"
* i++ updates i to 1
* Condition 1 > 0is true, so the loop exits.
* Why Doesn't the Loop Continue?
* Since i starts at 0, the conditioni++ > 0 is false after the first iteration.
* The loopexits immediately after printing "Chanel".
* Final Output
nginx
Chanel
Thus, the correct answer is:Chanel
References:
* Java SE 21 - do-while Loop
* Java SE 21 - Post-Increment Behavior


質問 # 29
Given:
java
System.out.print(Boolean.logicalAnd(1 == 1, 2 < 1));
System.out.print(Boolean.logicalOr(1 == 1, 2 < 1));
System.out.print(Boolean.logicalXor(1 == 1, 2 < 1));
What is printed?

  • A. truefalsetrue
  • B. Compilation fails
  • C. falsetruetrue
  • D. truetruetrue
  • E. truetruefalse

正解:A

解説:
In this code, three static methods from the Boolean class are used: logicalAnd, logicalOr, and logicalXor.
Each method takes two boolean arguments and returns a boolean result based on the respective logical operation.
Evaluation of Each Statement:
* Boolean.logicalAnd(1 == 1, 2 < 1)
* Operands:
* 1 == 1 evaluates to true.
* 2 < 1 evaluates to false.
* Operation:
* Boolean.logicalAnd(true, false) performs a logical AND operation.
* The result is false because both operands must be true for the AND operation to return true.
* Output:
* System.out.print(false); prints false.
* Boolean.logicalOr(1 == 1, 2 < 1)
* Operands:
* 1 == 1 evaluates to true.
* 2 < 1 evaluates to false.
* Operation:
* Boolean.logicalOr(true, false) performs a logical OR operation.
* The result is true because at least one operand is true.
* Output:
* System.out.print(true); prints true.
* Boolean.logicalXor(1 == 1, 2 < 1)
* Operands:
* 1 == 1 evaluates to true.
* 2 < 1 evaluates to false.
* Operation:
* Boolean.logicalXor(true, false) performs a logical XOR (exclusive OR) operation.
* The result is true because exactly one operand is true.
* Output:
* System.out.print(true); prints true.
Combined Output:
Combining the outputs from each statement, the final printed result is:
nginx
falsetruetrue


質問 # 30
A module com.eiffeltower.shop with the related sources in the src directory.
That module requires com.eiffeltower.membership, available in a JAR located in the lib directory.
What is the command to compile the module com.eiffeltower.shop?

  • A. bash
    CopyEdit
    javac -source src -p lib/com.eiffel.membership.jar -d out -m com.eiffeltower.shop
  • B. css
    CopyEdit
    javac -path src -p lib/com.eiffel.membership.jar -d out -m com.eiffeltower.shop
  • C. css
    CopyEdit
    javac --module-source-path src -p lib/com.eiffel.membership.jar -d out -m com.eiffeltower.shop
  • D. css
    CopyEdit
    javac --module-source-path src -p lib/com.eiffel.membership.jar -s out -m com.eiffeltower.shop

正解:C

解説:
Comprehensive and Detailed In-Depth Explanation:
Understanding Java Module Compilation (javac)
Java modules are compiled using the javac command with specific options to specify:
* Where the source files are located (--module-source-path)
* Where required dependencies (external modules) are located (-p / --module-path)
* Where the compiled output should be placed (-d)
Breaking Down the Correct Compilation Command
css
CopyEdit
javac --module-source-path src -p lib/com.eiffel.membership.jar -d out -m com.eiffeltower.shop
* --module-source-path src # Specifies the directory where module sources are located.
* -p lib/com.eiffel.membership.jar # Specifies the module path (JAR dependency in lib).
* -d out # Specifies the output directory for compiled .class files.
* -m com.eiffeltower.shop # Specifies the module to compile (com.eiffeltower.shop).


質問 # 31
Which three of the following are correct about the Java module system?

  • A. If a package is defined in both a named module and the unnamed module, then the package in the unnamed module is ignored.
  • B. We must add a module descriptor to make an application developed using a Java version prior to SE9 run on Java 11.
  • C. The unnamed module exports all of its packages.
  • D. The unnamed module can only access packages defined in the unnamed module.
  • E. Code in an explicitly named module can access types in the unnamed module.
  • F. If a request is made to load a type whose package is not defined in any known module, then the module system will attempt to load it from the classpath.

正解:A、C、F

解説:
The Java Platform Module System (JPMS), introduced in Java 9, modularizes the Java platform and applications. Understanding the behavior of named and unnamed modules is crucial.
* B. The unnamed module exports all of its packages.
Correct. The unnamed module, which includes all code on the classpath, exports all of its packages. This means that any code can access the public types in these packages. However, the unnamed module cannot be explicitly required by named modules.
* C. If a package is defined in both a named module and the unnamed module, then the package in the unnamed module is ignored.
Correct. In cases where a package is present in both a named module and the unnamed module, the version in the named module takes precedence. The package in the unnamed module is ignored to maintain module integrity and avoid conflicts.
* F. If a request is made to load a type whose package is not defined in any known module, then the module system will attempt to load it from the classpath.
Correct. When the module system cannot find a requested type in any known module, it defaults to searching the classpath (i.e., the unnamed module) to locate the type.
Incorrect Options:
* A. Code in an explicitly named module can access types in the unnamed module.
Incorrect. Named modules cannot access types in the unnamed module. The unnamed module can read from named modules, but the reverse is not allowed to ensure strong encapsulation.
* D. We must add a module descriptor to make an application developed using a Java version prior to SE9 run on Java 11.
Incorrect. Adding a module descriptor (module-info.java) is not mandatory for applications developed before Java 9 to run on Java 11. Such applications can run in the unnamed module without modification.
* E. The unnamed module can only access packages defined in the unnamed module.
Incorrect. The unnamed module can access all packages exported by all named modules, in addition to its own packages.


質問 # 32
Given:
java
CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
list.add("A");
list.add("B");
list.add("C");
// Writing in one thread
new Thread(() -> {
list.add("D");
System.out.println("Element added: D");
}).start();
// Reading in another thread
new Thread(() -> {
for (String element : list) {
System.out.println("Read element: " + element);
}
}).start();
What is printed?

  • A. It throws an exception.
  • B. It prints all elements, including changes made during iteration.
  • C. It prints all elements, but changes made during iteration may not be visible.
  • D. Compilation fails.

正解:C

解説:
* Understanding CopyOnWriteArrayList
* CopyOnWriteArrayList is a thread-safe variant of ArrayList whereall mutative operations (add, set, remove, etc.) create a new copy of the underlying array.
* This meansiterations will not reflect modifications made after the iterator was created.
* Instead of modifying the existing array, a new copy is created for modifications, ensuring that readers always see a consistent snapshot.
* Thread Execution Behavior
* Thread 1 (Writer Thread)adds "D" to the list.
* Thread 2 (Reader Thread)iterates over the list.
* The reader thread gets a snapshot of the listbefore"D" is added.
* The output may look like:
mathematica
Read element: A
Read element: B
Read element: C
Element added: D
* "D" may not appear in the output of the reader threadbecause the iteration occurs on a snapshot before the modification.
* Why doesn't it print all elements including changes?
* Since CopyOnWriteArrayList doesnot allow changes to be visible during iteration, the reader threadwill not see "D"if it started iterating before "D" was added.
Thus, the correct answer is:"It prints all elements, but changes made during iteration may not be visible." References:
* Java SE 21 - CopyOnWriteArrayList


質問 # 33
Given:
java
package vehicule.parent;
public class Car {
protected String brand = "Peugeot";
}
and
java
package vehicule.child;
import vehicule.parent.Car;
public class MiniVan extends Car {
public static void main(String[] args) {
Car car = new Car();
car.brand = "Peugeot 807";
System.out.println(car.brand);
}
}
What is printed?

  • A. Peugeot
  • B. Compilation fails.
  • C. An exception is thrown at runtime.
  • D. Peugeot 807

正解:B

解説:
In Java,protected memberscan only be accessedwithin the same packageor bysubclasses, but there is a key restriction:
* A protected member of a superclass is only accessible through inheritance in a subclass but not through an instance of the superclass that is declared outside the package.
Why does compilation fail?
In the MiniVan class, the following line causes acompilation error:
java
Car car = new Car();
car.brand = "Peugeot 807";
* The brand field isprotectedin Car, which means it isnot accessible via an instance of Car outside the vehicule.parent package.
* Even though MiniVan extends Car, itcannotaccess brand using a Car instance (car.brand) because car is declared as an instance of Car, not MiniVan.
* The correct way to access brand inside MiniVan is through inheritance (this.brand or super.brand).
Corrected Code
If we change the MiniVan class like this, it will compile and run successfully:
java
package vehicule.child;
import vehicule.parent.Car;
public class MiniVan extends Car {
public static void main(String[] args) {
MiniVan minivan = new MiniVan(); // Access via inheritance
minivan.brand = "Peugeot 807";
System.out.println(minivan.brand);
}
}
This would output:
nginx
Peugeot 807
Key Rule from Oracle Java Documentation
* Protected membersof a class are accessible withinthe same packageand tosubclasses, butonly through inheritance, not through a superclass instance declared outside the package.
References:
* Java SE 21 & JDK 21 - Controlling Access to Members of a Class
* Java SE 21 & JDK 21 - Inheritance Rules


質問 # 34
Given:
java
List<String> frenchAuthors = new ArrayList<>();
frenchAuthors.add("Victor Hugo");
frenchAuthors.add("Gustave Flaubert");
Which compiles?

  • A. Map<String, ArrayList<String>> authorsMap1 = new HashMap<>();
    java
    authorsMap1.put("FR", frenchAuthors);
  • B. Map<String, List<String>> authorsMap4 = new HashMap<String, ArrayList<String>>(); java authorsMap4.put("FR", frenchAuthors);
  • C. var authorsMap3 = new HashMap<>();
    java
    authorsMap3.put("FR", frenchAuthors);
  • D. Map<String, List<String>> authorsMap5 = new HashMap<String, List<String>>(); java authorsMap5.put("FR", frenchAuthors);
  • E. Map<String, ? extends List<String>> authorsMap2 = new HashMap<String, ArrayList<String>> (); java authorsMap2.put("FR", frenchAuthors);

正解:B、C、D

解説:
* Option A (Map<String, ArrayList<String>> authorsMap1 = new HashMap<>();)
* #Compilation Fails
* frenchAuthors is declared as List<String>,notArrayList<String>.
* The correct way to declare a Map that allows storing List<String> is to use List<String> as the generic type,notArrayList<String>.
* Fix:
java
Map<String, List<String>> authorsMap1 = new HashMap<>();
authorsMap1.put("FR", frenchAuthors);
* Reason:The type ArrayList<String> is more specific than List<String>, and this would cause a type mismatcherror.
* Option B (Map<String, ? extends List<String>> authorsMap2 = new HashMap<String, ArrayList<String>>();)
* #Compilation Fails
* ? extends List<String>makes the map read-onlyfor adding new elements.
* The line authorsMap2.put("FR", frenchAuthors); causes acompilation errorbecause wildcard (?
extends List<String>) prevents modifying the map.
* Fix:Remove the wildcard:
java
Map<String, List<String>> authorsMap2 = new HashMap<>();
authorsMap2.put("FR", frenchAuthors);
* Option C (var authorsMap3 = new HashMap<>();)
* Compiles Successfully
* The var keyword allows the compiler to infer the type.
* However,the inferred type is HashMap<Object, Object>, which may cause issues when retrieving values.
* Option D (Map<String, List<String>> authorsMap4 = new HashMap<String, ArrayList<String>
>();)
* Compiles Successfully
* Valid declaration:HashMap<K, V> can be assigned to Map<K, V>.
* Using new HashMap<String, ArrayList<String>>() with Map<String, List<String>> isallowed due to polymorphism.
* Correct syntax:
java
Map<String, List<String>> authorsMap4 = new HashMap<String, ArrayList<String>>(); authorsMap4.put("FR", frenchAuthors);
* Option E (Map<String, List<String>> authorsMap5 = new HashMap<String, List<String>>();)
* Compiles Successfully
* HashMap<String, List<String>> isa valid instantiation.
* Correct usage:
java
Map<String, List<String>> authorsMap5 = new HashMap<>();
authorsMap5.put("FR", frenchAuthors);
Thus, the correct answers are:C, D, E
References:
* Java SE 21 - Generics and Type Inference
* Java SE 21 - var Keyword


質問 # 35
Given:
java
Object input = 42;
String result = switch (input) {
case String s -> "It's a string with value: " + s;
case Double d -> "It's a double with value: " + d;
case Integer i -> "It's an integer with value: " + i;
};
System.out.println(result);
What is printed?

  • A. Compilation fails.
  • B. It throws an exception at runtime.
  • C. null
  • D. It's an integer with value: 42
  • E. It's a double with value: 42
  • F. It's a string with value: 42

正解:A

解説:
* Pattern Matching in switch
* The switch expression introduced inJava 21supportspattern matchingfor different types.
* However,a switch expression must be exhaustive, meaningit must cover all possible cases or provide a default case.
* Why does compilation fail?
* input is an Object, and the switch expression attempts to pattern-match it to String, Double, and Integer.
* If input had been of another type (e.g., Float or Long), there would beno matching case, leading to anon-exhaustive switch.
* Javarequires a default caseto ensure all possible inputs are covered.
* Corrected Code (Adding a default Case)
java
Object input = 42;
String result = switch (input) {
case String s -> "It's a string with value: " + s;
case Double d -> "It's a double with value: " + d;
case Integer i -> "It's an integer with value: " + i;
default -> "Unknown type";
};
System.out.println(result);
* With this change, the codecompiles and runs successfully.
* Output:
vbnet
It's an integer with value: 42
Thus, the correct answer is:Compilation failsdue to a missing default case.
References:
* Java SE 21 - Pattern Matching for switch
* Java SE 21 - switch Expressions


質問 # 36
Given:
java
try (FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos)) {
fos.write("Today");
fos.writeObject("Today");
oos.write("Today");
oos.writeObject("Today");
} catch (Exception ex) {
// handle exception
}
Which statement compiles?

  • A. oos.writeObject("Today");
  • B. oos.write("Today");
  • C. fos.write("Today");
  • D. fos.writeObject("Today");

正解:A

解説:
In Java, FileOutputStream and ObjectOutputStream are used for writing data to files, but they have different purposes and methods. Let's analyze each statement:
* fos.write("Today");
The FileOutputStream class is designed to write raw byte streams to files. The write method in FileOutputStream expects a parameter of type int or byte[]. Since "Today" is a String, passing it directly to fos.
write("Today"); will cause a compilation error because there is no write method in FileOutputStream that accepts a String parameter.
* fos.writeObject("Today");
The FileOutputStream class does not have a method named writeObject. The writeObject method is specific to ObjectOutputStream. Therefore, attempting to call fos.writeObject("Today"); will result in a compilation error.
* oos.write("Today");
The ObjectOutputStream class is used to write objects to an output stream. However, it does not have a write method that accepts a String parameter. The available write methods in ObjectOutputStream are for writing primitive data types and objects. Therefore, oos.write("Today"); will cause a compilation error.
* oos.writeObject("Today");
The ObjectOutputStream class provides the writeObject method, which is used to serialize objects and write them to the output stream. Since String implements the Serializable interface, "Today" can be serialized.
Therefore, oos.writeObject("Today"); is valid and compiles successfully.
In summary, the only statement that compiles without errors is oos.writeObject("Today");.
References:
* Java SE 21 & JDK 21 - ObjectOutputStream
* Java SE 21 & JDK 21 - FileOutputStream


質問 # 37
Given:
java
public class OuterClass {
String outerField = "Outer field";
class InnerClass {
void accessMembers() {
System.out.println(outerField);
}
}
public static void main(String[] args) {
System.out.println("Inner class:");
System.out.println("------------");
OuterClass outerObject = new OuterClass();
InnerClass innerObject = new InnerClass(); // n1
innerObject.accessMembers(); // n2
}
}
What is printed?

  • A. markdown
    Inner class:
    ------------
    Outer field
  • B. Nothing
  • C. An exception is thrown at runtime.
  • D. Compilation fails at line n1.
  • E. Compilation fails at line n2.

正解:D

解説:
* Understanding Inner Classes in Java
* Aninner class (non-static nested class)requires an instance of the outer classbefore it can be instantiated.
* Incorrect instantiationof the inner class at n1:
java
InnerClass innerObject = new InnerClass(); // Compilation error
* Since InnerClass is anon-staticinner class, itmust be created from an instance of OuterClass.
* Correct Way to Instantiate the Inner Class
java
OuterClass outerObject = new OuterClass();
OuterClass.InnerClass innerObject = outerObject.new InnerClass(); // Correct
* Thiscorrectly associatesthe inner class with an instance of OuterClass.
* Why Does Compilation Fail?
* The error occurs atline n1because InnerClass is beinginstantiated incorrectly.
Thus, the correct answer is:Compilation fails at line n1.
References:
* Java SE 21 - Nested and Inner Classes
* Java SE 21 - Accessing Outer Class Members


質問 # 38
Given:
java
public class Test {
class A {
}
static class B {
}
public static void main(String[] args) {
// Insert here
}
}
Which three of the following are valid statements when inserted into the given program?

  • A. B b = new Test().new B();
  • B. A a = new Test().new A();
  • C. B b = new Test.B();
  • D. A a = new Test.A();
  • E. B b = new B();
  • F. A a = new A();

正解:B、C、E

解説:
In the provided code, we have two inner classes within the Test class:
* Class A:
* An inner (non-static) class.
* Instances of A are associated with an instance of the enclosing Test class.
* Class B:
* A static nested class.
* Instances of B are not associated with any instance of the enclosing Test class and can be instantiated without an instance of Test.
Evaluation of Statements:
A: A a = new A();
* Invalid.Since A is a non-static inner class, it requires an instance of the enclosing class Test to be instantiated. Attempting to instantiate A without an instance of Test will result in a compilation error.
B: B b = new Test.B();
* Valid.B is a static nested class and can be instantiated without an instance of Test. This syntax is correct.
C: A a = new Test.A();
* Invalid.Even though A is referenced through Test, it is a non-static inner class and requires an instance of Test for instantiation. This will result in a compilation error.
D: B b = new Test().new B();
* Invalid.While this syntax is used for instantiating non-static inner classes, B is a static nested class and does not require an instance of Test. This will result in a compilation error.
E: B b = new B();
* Valid.Since B is a static nested class, it can be instantiated directly without referencing the enclosing class.
F: A a = new Test().new A();
* Valid.This is the correct syntax for instantiating a non-static inner class. An instance of Test is created, and then an instance of A is created associated with that Test instance.
Therefore, the valid statements are B, E, and F.


質問 # 39
Given:
java
Optional o1 = Optional.empty();
Optional o2 = Optional.of(1);
Optional o3 = Stream.of(o1, o2)
.filter(Optional::isPresent)
.findAny()
.flatMap(o -> o);
System.out.println(o3.orElse(2));
What is the given code fragment's output?

  • A. 0
  • B. Compilation fails
  • C. Optional.empty
  • D. 1
  • E. 2
  • F. Optional[1]
  • G. An exception is thrown

正解:E

解説:
In this code, two Optional objects are created:
* o1 is an empty Optional.
* o2 is an Optional containing the integer 1.
A stream is created from o1 and o2. The filter method retains only the Optional instances that are present (i.e., non-empty). This results in a stream containing only o2.
The findAny method returns an Optional describing some element of the stream, or an empty Optional if the stream is empty. Since the stream contains o2, findAny returns Optional[Optional[1]].
The flatMap method is then used to flatten this nested Optional. It applies the provided mapping function (o -
> o) to the value, resulting in Optional[1].
Finally, o3.orElse(2) returns the value contained in o3 if it is present; otherwise, it returns 2. Since o3 contains
1, the output is 1.


質問 # 40
......

あなたをお手軽に1z0-830試験合格させるし100%試験合格保証:https://www.passtest.jp/Oracle/1z0-830-shiken.html

100%無料1z0-830試験問題集実際問題を使おうJava SE問題集:https://drive.google.com/open?id=1fbxxWjam03uw0G6QYCuxPExGUHwsYYOQ