java scjp Language basic

Thursday, December 13, 2007 Posted by SV.Sasikumar 2 comments
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.
Labels: