Top

#### Instruction

• Total number of questions : 20
• Time allotted : 30:00 Minutes:Seconds.
• Each question carry 1 mark, no negative marks.
• DO NOT refresh the page.
• All the best

 Marks: 0/20 Total number of questions : 20 Number of answered questions : 0 Number of unanswered questions : 20 Java Programming [ Question No: 1 To 20 ] : 1. What will be the output of the program? public class If2 { static boolean b1, b2; public static void main(String [] args) { int x = 0; if ( !b1 ) /* Line 7 */ { if ( !b2 ) /* Line 9 */ { b1 = true; x++; if ( 5 > 6 ) { x++; } if ( !b1 ) x = x + 10; else if ( b2 = true ) /* Line 19 */ x = x + 100; else if ( b1 | b2 ) /* Line 21 */ x = x + 1000; } } System.out.println(x); } } A 00 B 1 C 101 D 111 Your Answer : (Not Answered) Correct Answer : C Explanation: As instance variables, b1 and b2 are initialized to false. The if tests on lines 7 and 9 are successful so b1 is set to true and x is incremented. The next if test to succeed is on line 19 (note that the code is not testing to see if b2 is true, it is setting b2 to be true). Since line 19 was successful, subsequent else-if's (line 21) will be skipped. 2. What will be the output of the program? public class Switch2 { final static short x = 2; public static int y = 0; public static void main(String [] args) { for (int z=0; z < 3> A 0 1 2 B 0 1 2 1 2 2 C 2 1 0 1 0 0 D 2 1 2 0 1 2 Your Answer : (Not Answered) Correct Answer : D Explanation: The case expressions are all legal because x is marked final, which means the expressions can be evaluated at compile time. In the first iteration of the for loop case x-2 matches, so 2 is printed. In the second iteration, x-1 is matched so 1 and 2 are printed (remember, once a match is found all remaining statements are executed until a break statement is encountered). In the third iteration, x is matched. So 0 1 and 2 are printed. 3. What will be the output of the program? public class ArrayTest { public static void main(String[ ] args) { float f1[ ], f2[ ]; f1 = new float[10]; f2 = f1; System.out.println("f2[0] = " + f2[0]); } } A It prints f2[0] = 0.0 B It prints f2[0] = NaN C An error at f2 = f1; causes compile to fail. D It prints the garbage value. Your Answer : (Not Answered) Correct Answer : A Explanation: Option A is correct. When you create an array (f1 = new float[10];) the elements are initialises to the default values for the primitive data type (float in this case - 0.0), so f1 will contain 10 elements each with a value of 0.0. f2 has been declared but has not been initialised, it has the ability to reference or point to an array but as yet does not point to any array. f2 = f1; copies the reference (pointer/memory address) of f1 into f2 so now f2 points at the array pointed to by f1. This means that the values returned by f2 are the values returned by f1. Changes to f1 are also changes to f2 because both f1 and f2 point to the same array. 4. What will be the output of the program? class Base { Base() { System.out.print("Base"); } } public class Alpha extends Base { public static void main(String[] args) { new Alpha(); /* Line 12 */ new Base(); /* Line 13 */ } } A Base B BaseBase C Compilation fails D The code runs with no output Your Answer : (Not Answered) Correct Answer : B Explanation: Option B is correct. It would be correct if the code had compiled, and the subclass Alpha had been saved in its own file. In this case Java supplies an implicit call from the sub-class constructor to the no-args constructor of the super-class therefore line 12 causes Base to be output. Line 13 also causes Base to be output. Option A is wrong. It would be correct if either the main class or the subclass had not been instantiated. Option C is wrong. The code compiles. Option D is wrong. There is output. 5. public class Test { } What is the prototype of the default constructor? A Test( ) B Test(void) C public Test( ) D public Test(void) Your Answer : (Not Answered) Correct Answer : C Explanation: Option A and B are wrong because they use the default access modifier and the access modifier for the class is public (remember, the default constructor has the same access modifier as the class). Option D is wrong. The void makes the compiler think that this is a method specification - in fact if it were a method specification the compiler would spit it out. 6. public class X { public static void main(String [] args) { X x = new X(); X x2 = m1(x); /* Line 6 */ X x4 = new X(); x2 = x4; /* Line 8 */ doComplexStuff(); } static X m1(X mx) { mx = new X(); return mx; } } After line 8 runs. how many objects are eligible for garbage collection?  A 1 B 2 C 3 Your Answer : (Not Answered) Correct Answer : B Explanation: By the time line 8 has run, the only object without a reference is the one generated as a result of line 6. Remember that "Java is pass by value," so the reference variable x is not affected by the m1() method. Ref: http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html 7. public class ExceptionTest { class TestException extends Exception {} public void runTest() throws TestException {} public void test() /* Point X */ { runTest(); } } At Point X on line 5, which code is necessary to make the code compile? A No code is necessary. B throws Exception C catch ( Exception e ) D throws RuntimeException Your Answer : (Not Answered) Correct Answer : B Explanation: Option B is correct. This works because it DOES throw an exception if an error occurs. Option A is wrong. If you compile the code as given the compiler will complain: "unreported exception must be caught or declared to be thrown" The class extends Exception so we are forced to test for exceptions. Option C is wrong. The catch statement belongs in a method body not a method specification. Option D is wrong. TestException is a subclass of Exception therefore the test method, in this example, must throw TestException or some other class further up the Exception tree. Throwing RuntimeException is just not on as this belongs in the java.lang.RuntimeException branch (it is not a superclass of TestException). The compiler complains with the same error as in A above. 8. public class MyProgram { public static void throwit() { throw new RuntimeException(); } public static void main(String args[]) { try { System.out.println("Hello world "); throwit(); System.out.println("Done with try block "); } finally { System.out.println("Finally executing "); } } } which answer most closely indicates the behavior of the program? A The program will not compile. B The program will print Hello world, then will print that a RuntimeException has occurred, then will print Done with try block, and then will print Finally executing. C The program will print Hello world, then will print that a RuntimeException has occurred, and then will print Finally executing. D The program will print Hello world, then will print Finally executing, then will print that a RuntimeException has occurred. Your Answer : (Not Answered) Correct Answer : D Explanation: Once the program throws a RuntimeException (in the throwit() method) that is not caught, the finally block will be executed and the program will be terminated. If a method does not handle an exception, the finally block is executed before the exception is propagated. 9. You want subclasses in any package to have access to members of a superclass. Which is the most restrictive access that accomplishes this objective? A public B private C protected D transient Your Answer : (Not Answered) Correct Answer : C Explanation: Access modifiers dictate which classes, not which instances, may access features. Methods and variables are collectively known as members. Method and variable members are given access control in exactly the same way. private makes a member accessible only from within its own class protected makes a member accessible only to classes in the same package or subclass of the class default access is very similar to protected (make sure you spot the difference) default access makes a member accessible only to classes in the same package. public means that all other classes regardless of the package that they belong to, can access the member (assuming the class itself is visible) final makes it impossible to extend a class, when applied to a method it prevents a method from being overridden in a subclass, when applied to a variable it makes it impossible to reinitialise a variable once it has been initialised abstract declares a method that has not been implemented. transient indicates that a variable is not part of the persistent state of an object. volatile indicates that a thread must reconcile its working copy of the field with the master copy every time it accesses the variable. After examining the above it should be obvious that the access modifier that provides the most restrictions for methods to be accessed from the subclasses of the class from another package is C - protected. A is also a contender but C is more restrictive, B would be the answer if the constraint was the "same package" instead of "any package" in other words the subclasses clause in the question eliminates default. 10. What two statements are true about the result obtained from calling Math.random()? 1The result is less than 0.0. 2.The result is greater than or equal to 0.0.. 3.The result is less than 1.0. 4.The result is greater than 1.0. 5.The result is greater than or equal to 1.0. A 1 and 2 B 2 and 3 C 3 and 4 D 4 and 5 Your Answer : (Not Answered) Correct Answer : B Explanation: (2) and (3) are correct. The result range for random() is 0.0 to < 1.0; 1.0 is not in range. 11. Which two statements are true about wrapper or String classes? 1.If x and y refer to instances of different wrapper classes, then the fragment x.equals(y) will cause a compiler failure. 2.If x and y refer to instances of different wrapper classes, then x == y can sometimes be true. 3.If x and y are String references and if x.equals(y) is true, then x == y is true. 4.If x, y, and z refer to instances of wrapper classes and x.equals(y) is true, and y.equals(z) is true, then z.equals(x) will always be true. 5.If x and y are String references and x == y is true, then y.equals(x) will be true.   A 1 and 2 B 2 and 3 C 3 and 4 D 4 and 5 Your Answer : (Not Answered) Correct Answer : D Explanation: Statement (4) describes an example of the equals() method behaving transitively. By the way, x, y,and z will all be the same type of wrapper. Statement (5) is true because x and y are referring to the same String object. Statement (1) is incorrect—the fragment will compile. Statement (2) is incorrect because x == y means that the two reference variables are referring to the same object. Statement (3) will only be true if x and y refer to the same String. It is possible for x and y to refer to two different String objects with the same value. 12. Which statement is true? A All objects that are eligible for garbage collection will be garbage collected by the garbage collector. B Objects with at least one reference will never be garbage collected. C Objects from a class with the finalize() method overridden will never be garbage collected. D Objects instantiated within anonymous inner classes are placed in the garbage collectible heap. Your Answer : (Not Answered) Correct Answer : D Explanation: All objects are placed in the garbage collectible heap. Option A is incorrect because the garbage collector makes no guarantees. Option B is incorrect because islands of isolated objects can exist. Option C is incorrect because finalize() has no such mystical powers. 13. What will be the output of the program? public class Foo { Foo() { System.out.print("foo"); } class Bar { Bar() { System.out.print("bar"); } public void go() { System.out.print("hi"); } } /* class Bar ends */ public static void main (String [] args) { Foo f = new Foo(); f.makeBar(); } void makeBar() { (new Bar() {}).go(); } }/* class Foo ends */ A Compilation fails. B An error occurs at runtime. C It prints "foobarhi" D It prints "barhi" Your Answer : (Not Answered) Correct Answer : C Explanation: Option C is correct because first the Foo instance is created, which means the Foo constructor runs and prints "foo". Next, the makeBar() method is invoked which creates a Bar, which means the Bar constructor runs and prints "bar", and finally the go() method is invoked on the new Bar instance, which means the go() method prints "hi". 14. Which statement is true about assertions in the Java programming language? A Assertion expressions should not contain side effects. B Assertion expression values can be any primitive type. C Assertions should be used for enforcing preconditions on public methods. D An AssertionError thrown as a result of a failed assertion should always be handled by the enclosing method. Your Answer : (Not Answered) Correct Answer : A Explanation: Option A is correct. Because assertions may be disabled, programs must not assume that the boolean expressions contained in assertions will be evaluated. Thus these expressions should be free of side effects. That is, evaluating such an expression should not affect any state that is visible after the evaluation is complete. Although it is not illegal for a boolean expression contained in an assertion to have a side effect, it is generally inappropriate, as it could cause program behaviour to vary depending on whether assertions are enabled or disabled. Assertion checking may be disabled for increased performance. Typically, assertion checking is enabled during program development and testing and disabled for deployment. Option B is wrong. Because you assert that something is "true". True is Boolean. So, an expression must evaluate to Boolean, not int or byte or anything else. Use the same rules for an assertion expression that you would use for a while condition. Option C is wrong. Usually, enforcing a precondition on a public method is done by condition-checking code that you write yourself, to give you specific exceptions. Option D is wrong. "You're never supposed to handle an assertion failure" Not all legal uses of assertions are considered appropriate. As with so much of Java, you can abuse the intended use for assertions, despite the best efforts of Sun's Java engineers to discourage you. For example, you're never supposed to handle an assertion failure. That means don't catch it with a catch clause and attempt to recover. Legally, however, AssertionError is a subclass of Throwable, so it can be caught. But just don't do it! If you're going to try to recover from something, it should be an exception. To discourage you from trying to substitute an assertion for an exception, the AssertionError doesn't provide access to the object that generated it. All you get is the String message. 15. Which of the following statements is true? A If assertions are compiled into a source file, and if no flags are included at runtime, assertions will execute by default. B As of Java version 1.4, assertion statements are compiled by default. C With the proper use of runtime arguments, it is possible to instruct the VM to disable assertions for a certain class, and to enable assertions for a certain package, at the same time. D When evaluating command-line arguments, the VM gives -ea flags precedence over -da flags. Your Answer : (Not Answered) Correct Answer : C Explanation: Option C is true because multiple VM flags can be used on a single invocation of a Java program. Option A is incorrect because at runtime assertions are ignored by default. Option B is incorrect because as of Java 1.4 you must add the argument -source 1.4 to the command line if you want the compiler to compile assertion statements. Option D is incorrect because the VM evaluates all assertion flags left to right. 16. What will be the output of the program? public class X { public static void main(String [] args) { try { badMethod(); /* Line 7 */ System.out.print("A"); } catch (Exception ex) /* Line 10 */ { System.out.print("B"); /* Line 12 */ } finally /* Line 14 */ { System.out.print("C"); /* Line 16 */ } System.out.print("D"); /* Line 18 */ } public static void badMethod() { throw new RuntimeException(); } } A AB B BC C ABC D BCD Your Answer : (Not Answered) Correct Answer : D Explanation: (1) A RuntimeException is thrown, this is a subclass of exception. (2) The exception causes the try to complete abruptly (line 7) therefore line 8 is never executed. (3) The exception is caught (line 10) and "B" is output (line 12) (4) The finally block (line 14) is always executed and "C" is output (line 16). (5) The exception was caught, so the program continues with line 18 and outputs "D". 17. What will be the output of the program? public class X { public static void main(String [] args) { try { badMethod(); System.out.print("A"); } catch (Exception ex) { System.out.print("B"); } finally { System.out.print("C"); } System.out.print("D"); } public static void badMethod() {} } A AC B BC C ACD D ABCD Your Answer : (Not Answered) Correct Answer : C Explanation: There is no exception thrown, so all the code with the exception of the catch statement block is run. 18. Which two statements are equivalent? 1.3/2 2.3<2> 3.3*4 4.3<<2> A 1 and 2 B 2 and 3 C 3 and 4 D 1 and 4 Your Answer : (Not Answered) Correct Answer : C Explanation: (1) is wrong. 3/2 = 1 (integer arithmetic). (2) is wrong. 3 < 2>. (3) is correct. 3 * 4 = 12. (4) is correct. 3 <<2>. In binary 3 is 11, now shift the bits two places to the left and we get 1100 which is 12 in binary (3*2*2). 19. Which of the following are legal lines of code? 1.int w = (int)888.8; 2.byte x = (byte)1000L; 3.long y = (byte)100; 4.byte z = (byte)100L; A 1 and 2 B 2 and 3 C 3 and 4 D All statements are correct. Your Answer : (Not Answered) Correct Answer : D Explanation: Statements (1), (2), (3), and (4) are correct. (1) is correct because when a floating-point number (a double in this case) is cast to an int, it simply loses the digits after the decimal. (2) and (4) are correct because a long can be cast into a byte. If the long is over 127, it loses its most significant (leftmost) bits. (3) actually works, even though a cast is not necessary, because a long can store a byte. 20. What will be the output of the program?\ class Bitwise { public static void main(String [] args) { int x = 11 & 9; int y = x ^ 3; System.out.println( y | 12 ); } } A 0 B 7 C 8 D 14 Your Answer : (Not Answered) Correct Answer : D Explanation: The & operator produces a 1 bit when both bits are 1. The result of the & operation is 9. The ^ operator produces a 1 bit when exactly one bit is 1; the result of this operation is 10. The | operator produces a 1 bit when at least one bit is 1; the result of this operation is 14. var totalQuestions = '20'; Marks Total number of questions : 20 Number of answered questions : 0 Number of unanswered questions : 20 About Us Home About Us Features Contact Us Terms of use Policy ExamsHunt Stay informed about all important Dates & Notifications We'll write only best content for you Copyright © 2023 ExamsHunt . All Rights Reserved . With