Navigation |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Topic: Declarations and access control
Question #31 |
|
Which of the following statements are true? |
- System.out.println( -1 >>> 2);will output a result larger than 10
- System.out.println( -1 >>> 2); will output a positive number
- System.out.println( 2 >> 1); will output the number 1
- System.out.println( 1 <<< 2); will output the number 4
|
Click here to see the answer
|
The Correct Answer is 1: System.out.println( -1 >>> 2);will output a result larger than 10 2: System.out.println( -1 >>> 2); will output a positive number 3: System.out.println( 2 >> 1); will output the number 1
|
Click here to see explanation
|
You can test this with the following class
public class shift
{
static int i=2;
public static void main(String argv[])
{
System.out.println( -1 >>> 2);
System.out.println( -1 >>> 2);
System.out.println( 2 >> 1);
}
}
Java does not have a <<< operator. The operation 1 << 2 would output 4
Because of the way twos complement number representation works the unsigned right shift operation means a small shift in a negative number can return a very large value so the output of option 1 will be much larger than 10.
The unsigned right shift places no significance on the leading bit that indicates the sign. For this shift the value 1 of the bit sign is replaced with a zero turning the result into a positive number for option 2.
|
Question #32 |
|
What will happen when you attempt to compile and run the following code? |
public class Tux extends Thread
{
static String sName = "vandeleur";
public static void main(String argv[])
{
Tux t = new Tux();
t.piggy(sName);
System.out.println(sName);
}
public void piggy(String sName)
{
sName = sName + " wiggy";
start();
}
public void run()
{
for(int i=0;i < 4; i++)
{
sName = sName + " " + i;
}
}
}
|
- Compile time error
- Compilation and output of "vandeleur wiggy"
- Compilation and output of "vandeleur wiggy 0 1 2 3"
- ) Compilation and output of either "vandeleur", "vandeleur 0", "vandeleur 0 1" "vandaleur 0 1 2" or "vandaleur 0 1 2 3"
|
Click here to see the answer
|
The Correct Answer is 4: ) Compilation and output of either "vandeleur", "vandeleur 0", "vandeleur 0 1" "vandaleur 0 1 2" or "vandaleur 0 1 2 3"
|
Click here to see explanation
|
If that seems a vague answer it is because you cannot be certain of the system that the underlying OS uses for allocating cycles for a Thread. The chances are that once the thread has been spun off in the call to start in the method piggy the main method will run to completion and the value of sName will still be vandeluer before the Thread modifies it. You cannot be certain of this though.
|
Question #33 |
|
What will be displayed when you attempt to compile and run the following code |
//Code start
import java.awt.*;
public class Butt extends Frame
{
public static void main(String argv[])
{
Butt MyBut=new Butt();
}
Butt()
{
Button HelloBut=new Button("Hello");
Button ByeBut=new Button("Bye");
add(HelloBut);
add(ByeBut);
setSize(300,300);
setVisible(true);
}
}
//Code end
|
- Two buttons side by side occupying all of the frame, Hello on the left and Bye on
the right
- One button occupying the entire frame saying Hello
- One button occupying the entire frame saying Bye
- Two buttons at the top of the frame one saying Hello the other saying Bye
|
Click here to see the answer
|
The Correct Answer is 3: One button occupying the entire frame saying Bye
|
Click here to see explanation
|
The default layout manager for a Frame is a border layout. If directions are not given (ie North, South, East or West), any button will simply go in the centre and occupy all the space. An additional button will simply be placed over the previous button. What you would probably want in a real example is to set up a flow layout as in
setLayout(new FlowLayout());
Which would allow the buttons to both appear side by side, given the appropriate font and size.
Applets and panels have a default FlowLayout manager
|
Question #34 |
|
What will be output by the following code? |
public class MyFor
{
public static void main(String argv[])
{
int i;
int j;
outer:
for (i=1;i <3;i++)
inner:
for(j=1; j<3; j++)
{
if (j==2)
continue outer;
System.out.println("Value for i=" + i + " Value for j=" +j);
}
}
}
|
- Value for i=1 Value for j=1
- Value for i=2 Value for j=1
- Value for i=2 Value for j=2
- Value for i=3 Value for j=1
|
Click here to see the answer
|
The Correct Answer is 1: Value for i=1 Value for j=1 2: Value for i=2 Value for j=1
|
Click here to see explanation
|
The statement continue outer causes the code to jump to the label outer and the for loop increments to the next number.
|
Question #35 |
|
Which statement is true of the following code? |
public class Agg
{
public static void main(String argv[])
{
Agg a = new Agg();
a.go();
}
public void go()
{
DSRoss ds1 = new DSRoss("one");
ds1.start();
}
}
class DSRoss extends Thread
{
private String sTname="";
DSRoss(String s)
{
sTname = s;
}
public void run()
{
notwait();
System.out.println("finished");
}
public void notwait()
{
while(true)
{
try
{
System.out.println("waiting");
wait();
}
catch(InterruptedException ie)
{
}
System.out.println(sTname);
notifyAll();
}
}
}
|
- It will cause a compile time error
- Compilation and output of "waiting"
- Compilation and output of "waiting" followed by "finished"
- Runtime error, an exception will be thrown
|
Click here to see the answer
|
The Correct Answer is 4: Runtime error, an exception will be thrown
|
Click here to see explanation
|
A call to wait/notify must be within synchronized code. With JDK1.2 this code throws the error message
java.lang.IllegalMonitorStateException: current thread not owner
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:424)
at DSRoss.notwait(Compiled Code)
at DSRoss.run(Agg.java:21)
|
Question #36 |
|
Which of the following methods can be legally inserted in place of the comment //Method Here ? |
class Base
{
public void amethod(int i) { }
}
public class Scope extends Base
{
public static void main(String argv[]){}
//Method Here
}
|
- void amethod(int i) throws Exception {}
- void amethod(long i)throws Exception {}
- void amethod(long i){}
- public void amethod(int i) throws Exception {}
|
Click here to see the answer
|
The Correct Answer is 2: void amethod(long i)throws Exception {} 3: void amethod(long i){}
|
Click here to see explanation
|
Options 1, & 4 will not compile as they attempt to throw Exceptions not declared in the base class. Because options 2 and 3 take a parameter of type long they represent overloading not overriding and there is no such limitations on overloaded methods.
|
Question #37 |
|
Which of the following will output -4.0 |
- System.out.println(Math.floor(-4.7));
- System.out.println(Math.round(-4.7));
- System.out.println(Math.ceil(-4.7));
- System.out.println(Math.min(-4.7));
|
Click here to see the answer
|
The Correct Answer is 3: System.out.println(Math.ceil(-4.7));
|
Click here to see explanation
|
Options 1 and 2 will produce -5 and option 4 will not compile because the min method requires 2 parameters.
|
Question #38 |
|
What will happen if you attempt to compile and run the following code? |
Integer ten=new Integer(10);
Long nine=new Long (9);
System.out.println(ten + nine);
int i=1;
System.out.println(i + ten);
|
- 19 followed by 20
- 19 followed by 11
- Compile time error
- 10 followed by 1
|
Click here to see the answer
|
The Correct Answer is 3: Compile time error
|
Click here to see explanation
|
The wrapper classes cannot be used like primitives.
Depending on your compiler you will get an error that says someting like "Error: Can't convert java lang Integer". Wrapper classes have similar names to primitives but all start with upper case letters.
Thus in this case we have int as a primitive and Integer as a wrapper. The objectives do not specifically mention the wrapper classes but don't be surprised if they come up.
|
Question #39 |
|
If you run the code below, what gets printed out? |
String s=new String("Bicycle");
int iBegin=1;
char iEnd=3;
System.out.println(s.substring(iBegin,iEnd));
|
- Bic
- ic
- icy
- error: no method matching substring(int,char)
|
Click here to see the answer
|
The Correct Answer is 2: ic
|
Click here to see explanation
|
This is a bit of a catch question. Anyone with a C/C++ background would figure out that addressing in strings starts with 0 so that 1 corresponds to i in the string Bicycle. The catch is that the second parameter returns the endcharacter minus 1. In this case it means instead of the "icy" being returned as intuition would expect it is only "ic".
|
Question #40 |
|
If you wanted to find out where the position of the letter v (ie return 2) in the string s
containing "Java", which of the following could you use? |
- mid(2,s);
- charAt(2);
- s.indexOf('v');
- indexOf(s,'v');
|
Click here to see the answer
|
The Correct Answer is 3: s.indexOf('v');
|
Click here to see explanation
|
charAt returns the letter at the position rather than searching for a letter and returning the position, MID is just to confuse the Basic Programmers, indexOf(s,'v'); is how some future VB/J++ nightmare hybrid, might perform such a calculation.
|
|
|
|
|
|
|
|
Today, there have been 3 visitors (5 hits) on this page! |
|
|
|
|
|
|
|