Consider a scenario where you need to create a variable that can hold references to objects of any type. Which of the following approaches would be most appropriate in Java 2024 standards?
AUse raw type: List myList = new ArrayList();
BUse generics: List myList = new ArrayList();
CUse Object type: Object obj = new Object();
DUse var keyword: var myList = new ArrayList();
Correct Answer:
B. Use generics: List myList = new ArrayList();
EXPLANATION
Using generics with wildcards (List<?>) is the safest and most type-safe approach to handle objects of any type in modern Java. The 'var' keyword is also acceptable but wildcards provide better type checking.
What will be the output of the following code?
String str1 = "Hello";
String str2 = new String("Hello");
System.out.println(str1 == str2);
Atrue
Bfalse
Cnull
DCompilation error
Correct Answer:
B. false
EXPLANATION
The '==' operator compares object references, not content. str1 refers to the string pool while str2 is a new object in heap memory, hence they have different references.
Which method is called automatically when an object is garbage collected?
Afinalize()
Bdestroy()
Cdelete()
Dcleanup()
Correct Answer:
A. finalize()
EXPLANATION
The finalize() method is called by the garbage collector before an object is destroyed. It can be used to perform cleanup operations, though it's generally not recommended in modern Java.
Which of the following will compile and run without errors?
Apublic static void main() { }
Bpublic static void main(String[] args) { }
Cpublic void main(String[] args) { }
Dstatic void main(String[] args) { }
Correct Answer:
B. public static void main(String[] args) { }
EXPLANATION
The correct signature for the main method is 'public static void main(String[] args)'. It must be public, static, void, named 'main', and accept a String array parameter. Any deviation will not be recognized as the entry point.
Which of the following correctly represents variable declaration and initialization in Java?
Aint x; x = 5.5;
Bdouble y = 10;
Cboolean flag = true;
DString name = 123;
Correct Answer:
C. boolean flag = true;
EXPLANATION
Option C is correct. Option A causes a compilation error (cannot assign double to int). Option B works but there's implicit conversion. Option D causes a compilation error (cannot assign int to String).
CConstructors are called automatically when an object is created
DA class can have multiple constructors
Correct Answer:
B. Constructors must return a value
EXPLANATION
Constructors do NOT have a return type, not even void. They automatically initialize objects when created. They can be overloaded and a class can have multiple constructors with different parameters.
Which access modifier allows a member to be accessible only within the same package?
Apublic
Bprivate
Cprotected
Ddefault (no modifier)
Correct Answer:
D. default (no modifier)
EXPLANATION
When no access modifier is specified, it's called package-private or default access. Members with default access are accessible only within the same package, not from other packages.
What will happen if you try to access an index out of bounds in an array?
AReturns 0
BReturns null
CThrows ArrayIndexOutOfBoundsException
DCompilation error
Correct Answer:
C. Throws ArrayIndexOutOfBoundsException
EXPLANATION
Accessing an array index that doesn't exist throws an ArrayIndexOutOfBoundsException at runtime. This is a checked exception that must be handled or declared.
Which of the following statements about static methods is correct?
AStatic methods can access instance variables directly
BStatic methods can be overridden by subclasses
CStatic methods can only be called using the class name
DStatic methods must have a return type
Correct Answer:
C. Static methods can only be called using the class name
EXPLANATION
Static methods belong to the class, not to any instance. They are called using the class name (e.g., ClassName.methodName()). They cannot directly access instance variables and cannot be overridden (though they can be hidden).