iEntry 10th Anniversary Java Faqs RSS Feed

SCJP Language Fundamentals

By: admin - Tuesday, September 9th, 2008 at 10:15 am

QUESTION1

  You have the following code in a file called Test.java

    class Base{
       public static void main(String[] args){
       System.out.println("Hello");
       }
    }

    public class Test extends Base{}

   What will happen if you try to compile and run this?

1. It will fail to compile.
2. Runtime error
3. Compiles and runs with no output.
4. Compiles and runs printing "Hello"

ANS : 4

 This will compile and print "Hello"
 The entry point for a standalone java program is
 the main method of the class that is being run.
 The java runtime system will look for that method
 in class Test and find that it does have such a method.
 It does not matter whether it is defined in the class itself
 or is inherited from a parent class.   

QUESTION2

         What is the result of trying to compile and run the following code.
         public final static void main(String[] args){
         double d = 10.0 / -0;
          if(d == Double.POSITIVE_INFINITY)
           System.out.println("Positive infinity");
           else
           System.out.println("Negative infinity");
         }

1. output Positive infinity
2. output Negative infinity
3. Will fail to compile
4. Runtime exception

ANS : 1

    There is no such thing as a positive or negative zero.
    Hence the result is always positive infinity.

QUESTION3

   What is the result that will be printed out ?
     void aMethod()
     {
     float f = (1 / 4) * 10;
     int i = Math.round(f);
     System.out.println(i);
     }

1.    2
2.    0
3.    3
4.    2.5
5.    25

ANS : 2
   The result of 1/4 will be zero because integer
   divion is carried out on the operands.
   If you need to obtain a fractional value
   you need to use either a float or double literal
   as in 1F / 4F.

QUESTION4

  Which of the following are valid declarations?

   Note : None of the literals used here
          contain the character O they are all zeroes.

1. int i     = 0XCAFE;
2. boolean b = 0;
3. char c    = 'A';
4. byte b    = 128;
5. char c    = "A";

ANS : 1,3

   1. is correct as it is a valid hexadecimal number.2. is  wrong
   because you can only assign the values true and false to them
   4 is wrong because 128 is beyond the range of a byte. 5is wrong
   because "A" is not a char it is a String. 

QUESTION5

  What is the result of trying to compile and run this program.
    public class Test{
       public static void main(String[] args){
        int[] a = {1};
        Test t = new Test();
        t.increment(a);
        System.out.println(a[a.length - 1]);
       }
       void increment(int[] i){
       i[i.length - 1]++;
       }
    }

1. Compiler error.
2. Compiles and runs printing out 2
3. Compiles and runs printing out 1
4. An ArrayIndexOutOfBounds Exception at runtime

ANS : 2

  You are passing a reference to an array as
  the argument to the method. The method may not
  modify the passed object reference but it can modify
  the object itself.  

QUESTION6

   What will happen if you try to compile and run this ?
   public class Test{
      static{
       print(10);
       }
     static void print(int x){
       System.out.println(x);
       System.exit(0);
      }
    }

1. Compiler error.
2. Will throw a NoSuchMethod error at runtime.
3. It will compile and run printing out "10"
4. It will run with no output.
5. It will run and print "10" and then crash with an error.      

ANS : 3

    This will run, print a message and terminate gracefully.
    The runtime system needs to load the class before it can look
    for the main method. So the static initializer will run first
    and print "10". Immediately after that System.exit(0) will be called
    terminating the program before an error can be thrown. 

QUESTION7

      Is this legal?
      long longArr[];
      int intArr[] = { 7 ,8 , 9};
      longArr = intArr;

1. Yes
2. No

ANS : 2

   You cannot assign a reference to an array of primitives
   to another unless they contain the same primitive types. 

QUESTION8

   True or False.
   The range of a byte is from  -127 to 128

1. True
2. False

ANS : 2

   Correct answer/s : 2
   The statement is false. The range of an array
   is from  - 128 to 127 

QUESTION9

   Identify the valid assignments.

1. float f  = \u0038;
2. long L2 = 2L;
3. float f  = 1.2;
4. char c = '/u004E';
5. byte b = 100;

ANS : 1,2,4,5

    1 is correct because \u0038 is unicode for nbr 8.
    3 is wrong because 1.2 is a double literal.
    4. is a little sneaky perhaps. The
       unicode escape character is incorrect

QUESTION10

        What is the result of trying to compile and run the following code.
         public static void main(String[] args){
         double d = 10 / 0;
         if(d == Double.POSITIVE_INFINITY)
           System.out.println("Positive infinity");
         else
           System.out.println("Negative infinity");
         }

1. output Positive infinity
2. output Negative infinity
3. Will fail to compile
4. Runtime exception

ANS : 4

   Division by zero on integer literals will throw
   a runtime error.

Stumble It!
 Digg!

Leave a Reply