JAVA EXAM 1---25
JAVA 測試I http://www.reibang.com/p/76b36d18844d
JAVA 測試II http://www.reibang.com/p/e7f7d29b185a
JAVA 測試III http://www.reibang.com/p/64d3495989a5
1
public class Test {
public void main(){
System.out.println("Hi");
}
public static void main (String [] args)
{
Test t=new Test();
t.main();
}
}
What will be happen if you compile and run above code?
- It will not compile
- It will not run
- It will compile but will not run
- It will output “Hi”
ANS: 4, 因為兩個函數(shù)參數(shù)不同, 屬于函數(shù)重載. 函數(shù)重載只考慮參數(shù)問題.
2
After execution of the code fragment below, what are the value of the variables x1, y1, and z1?
int x=10; int y =10; int z=10; int x1, y1, z1;
x1=++y; //x1 = 11
y1=z++; //y1 = 10
z1=z; // z1 = 11
Choose the one below:
- x1 = 10 , y1 = 10 and z1=10
- x1 = 10, y1 = 11, and z1=10
- x1=10, y1 = 10, and z1=11
- x1=11, y1=10, and z1=11
選4
3
What will be the output?
public class Test {
public int addTest(int x, int y) {
x = x + 1;
y = y + 1;
int z = (x + y);
return z;
}
public static void main(String[] args) {
int x = 10;
int y = 10;
int z = 0;
Test t = new Test();
z = t.addTest(x, y);
System.out.println("x =" + x + ",y =" + y + ",z = " + z);
}
}
Choose the one below:
- x=10, y=10, z=22
- x=11, y=11, z=22
- x=10, y=10, z=20
- x=11, y=11, z=20
選1, 因為函數(shù)傳的是?, 不是地址.
4
What will be the output of the program.?
Assume that MyList class is declared in MyList.java
and ListManager class is declared in ListManager.java file.
public class Test {
int size = 1;
public static void main(String[] args)
{
Test list = new Test();
list.size = 10;
ListManager lm = new ListManager();
lm.expandList(list);
System.out.println("list.size = " + list.size);
}
} //end of MyList
public class ListManager {
public void expandList(Test l)
{
l.size = l.size + 10;
}
}
Choose the one below:
- size=0
- size=10
- size=11
- size=20
選4, 因為傳的是類, 屬于址傳遞.
5
If int x = -1 then which of the following expression results in a positive value in x?
- x=x>>>32 // --> -1
- x=x>>>5 // --> 134217727
- x=x>>5 // ---> -1
- x=~x // ---> 0
選2, 因為>>>是無符號右移,空位補0, -1的二進制是32個1, >>是有符號右移空位補符號位-1的符號位是1,4不正確, 題目是問正數(shù).
6
6 . Which of the following lines of code would print “Equal” when you run it?
- int x=1; float y=1.0F; if(x==y){ System.out.println("Equal");} //Equal
- int x=1; Integer y= new Integer(1); if(x==y) {System.out.println("Equal");} // Equal
- Integer x=new Integer(1); Integer y=new Intger(1); if(x==y){ System.out.println("Equal");} //不輸出
- String x="1"; String y="1"; if (x==y) { System.out.println("Equal");} //Equal
1 2 4都會輸出 Equal,
7
Which of the following declarations are correct for the top level class?
- public synchronized class MyTest extends Thread
- private class MyTest extends Thread
- public abstract class MyTest extends Thread
- class MyTest extends Thread
選擇3, 4
8
Consider the following lines of code:
public class Test {
String x;
public void testDemo(int n) {
String y;
if (n > 0) {
y = "Hello";
}
System.out.println(x + y);
}
public static void main(String[] args) {
Test test = new Test();
test.testDemo(2);
}
} //end of MyList
- It will produce compiler warning that variable y may not have been initialized
- It will produce compiler warning that variable x may not have been initialized
- It will output “Hello”
- It will output “nullHello”
選2, 因為沒有初始化y,編譯失敗
9
Consider that Parent and Child classes are defined in two different files as below:
class Parent {
public Parent() {
System.out.println("I am Parent");
}
}
class Child extends Parent {
public Child(int x) {
System.out.println("I am Child");
}
public static void main(String[] args) {
Child c = new Child(10);
}
}
- It will not compile.
- It will compile successfully. It will output “I am Parent” and then “I am Child.”
- It will compile successfully. It will output “I am Child” and then “I am Parent.”
- It will compile successfully, but will not run.
這個題目有問題, Child和Parent首先得在一個包,第二Child類前得有public才能運行.
所以,要么編譯成功,輸出2, 要么編譯成功但不會輸出選4,
10
Consider following code:
import java.util.Vector;
public class Test {
static int size;
public expandList(int newSize) {
ListExpander lexp = new ListExpander();
Vector expandedList = lexp.expand();
class ListExpander {
public Vector expand() {
Vector v = new Vector(this.size + newSize);
return v;
}
}
}
}
- compiler error, “cannot refer inside an inner class to a static variable.”
- compiler error, “cannot refer inside an inner class to to a non-final variable newSize defined in a different method.”
- Both of the above
- None of the above
如果expandList函數(shù)前有返回類型, 那么就選2 newSize需要聲明為final類型, 如果沒有,就選4
11
Consider following code:
public class Parent{
public int size =0;
static class InnerClass{
public void incrementParentSize(){
XXX=XXX+10;
}
}
}
In above code, how can you access ‘size’ variable (of outer class Parent) inside innerclass at the place of ‘XXX’ ?
- super.size
- this.size
- Parent.size
- Can not access it`
選4, 靜態(tài)內(nèi)部類無法訪問非靜態(tài)成員, super是父類, this是當前類
12
Assume that Parent and Child classes are in different files:
public class Parent {
public Parent(int x, int y)
{
System.out.println("Created Parent");
}
}//end of Parent class
public class Child extends Parent {
public Child(int x, int y) {
super(x, y);
}
public Child(int x, int y, int z) {
System.out.println("Creating child");
this(x, y);
}
public static void main(String[] args) {
Child c = new Child(1, 2, 3);
}
}
What will happen if you try to compile and run above program?
- It will compile successfully. It will output “Created Parent” and then “Creating child”
- It will compile successfully. It will output “Creating child” and then “Created Parent”
- It will not compile giving warning, “Explicit constructor invocation must be first statement in constructor.”
- It will not compile giving warning, “Expression is not a valid block statement.”
一定不會編譯的,選3, 4
13
Consider following code:
public class OuterClass{
class InnerClass{
}
public void innerClassDemo(){
//Explicit instance of InnerClass
}
}
In above code, how can you explicitly create an instance of InnerClass?
- InnerClass i=InnerClass();
- InnerClass i=OuterClass.InnerClass();
- InnerClass i=new OuterClass ().new InnerClass();
- InnerClass i=new OuterClass.InnerClass();
前兩個都沒有new關(guān)鍵字, 選3, 4
14
Please select valid(有效) array declaration(s):
- int x[20];
- int []x=new int[20];
- int [][] x=new int [20][];
- int [][][] x=new int[20][20][20];
- int [] x={1,2,3};
2, 3, 4, 5都正確, 1錯誤
15
Consider following code:
public class Test {
protected void demo() throws NumberFormatException, ArrayIndexOutOfBoundsException {
//something here
}
public void demo(String s) {
//something here
}
}//end of Test class
Please select true statement(s) for demo code?
- It is an example of overloading method
- It is an example of overriding method
- Both of the above
- None of the above
選1, 方法重載, overloading
16
For the following code, please consider that super class is defined in question #15:
class MyTest extends Test {
private void demo() throws IndexOutOfBoundsException, ClassNotFoundException
{
//something here
}
}//end of MyTest class
What will happen if you try to compile above code ?
- It will compile successfully.
- Compiler error: Exception java.lang.ClassNotFoundException in throws clause of void MyTest.demo() is not compatible with void Test.demo().
- Compiler error: Cannot reduce visibility of the inherited method from Test.
- Both B and C
選4, MyTest中的demo()無法覆蓋Test中的demo()
正在嘗試分配更低的訪問權(quán)限; 以前為protected
17
Consider the following code:
public class Test {
public void demo(String[] list) {
try {
String s = list[list.length + 1];
System.out.println(s);
} catch (ArrayIndexOutOfBoundsException e) {
return;
} finally {
System.out.println("Finally here.");
}
}
public static void main(String[] args) {
Test t = new Test();
String[] list = {"one","two"};
t.demo(list);
System.out.println("Done !");
}
}//end of Test class
What happen if you try compile and run above code ?
- It will not compile.
- It will output “null” and then “Finally here.”
- It will output “Done!”
- It will output “Finally here” and then “Done!”
選4, 遇到catch里面return的時候,不執(zhí)行,finally一定會執(zhí)行!
18
Please consider following code:
public class Test{
public static void demo(String s)
{
debug("In demo:"+s);
}
private void debug(String s){
System.out.println(s);
}
public static void main(String [] args){
Test.demo(“Hello”);
}
}
What will happen if you try to compile and run above code ?
- It will compile successfully, but will not run.
- It will compile successfully, and outputs “In demo:Hello.”
- It will not compile with error message “Can not make a static reference to the instance method named.”
- None of the above
選3, 靜態(tài)方法不能調(diào)用非靜態(tài)方法
19
Consider the following code:
/**
* File Drawable.java
*/
public interface Drawable {
public void draw();
public void fill();
} /**
* End of file Drawable.java
*/
/** File Circle.java */
public class Circle implements Drawable {
int center=0;
public void draw(){
System.out.println(“Drawing circle”);
}
public static void main(String [] args){
Circle c=new Circle();
c.draw()
}
} /** End of file Circle.java */
If you attempt to compile and run Circle class what will be output?
- It will compile successfully, and outputs “Drawing circle.”
- It will not compile, and reports error: “class Circle must implement inherited abstract method void Drawable.fill.”
- It will not compile, and reports error: “Method Drawable.fill requires a body instead of a semicolon.”
- None of the above
選2, 因為只實現(xiàn)了接口的一個方法.
20
What will be the output?
int x=2; int y=3; int z=4;
if(x>2){
System.out.println(“Tested x”);
}if(y<3){
System.out.println(“Tested y”);
}if (z<=3){
System.out.println(“Tested z”);
}
Choose the one below:
- Tested x.
- Tested y.
- Tested z.
- None of the above.
選4
21
Consider the following code:
for(int i=0;i<2;i++)
{
for(int j=i;j<3; j++)
{
if (i==j)
{
continue;
}
System.out.println("i="+i+" j="+j);
}
}
Which lines would be part of the output?
- i = 0 j = 1
- i = 0 j = 2
- i = 1 j = 2
- None of the above
選1 2 3,
22
Consider the following code:
int j=0;
for( int i=0;i<2;i++)
{
for (j=i; j<3; j++)
{
continue;
}
System.out.println(“i = “+i+” j = “+j);
}
Which lines would be part of the output?
- i = 0 j = 0
- i = 1 j = 1
- i = 0 j = 3
- i = 1 j =3
選3 4
23
Consider the following code:
int i=0; int j=0;
for( i=0;i<2;i++)
{
for (j=i; j<3; j++)
{
break;
}
System.out.println("i = "+i+" j = "+j);
}
```
Which **lines** would be part of the output?
1. i = 0 j = 0
2. i = 1 j = 1
3. i = 0 j = 3
4. i = 1 j = 3
> 選1 2
#### 24
Consider the following code:
```
int i, j=0;
outer:
for( i=0;i<2;i++)
{
for (j=i; j<3; j++)
{
continue outer;
}
System.out.println("i = "+i+" j = "+j);
}
```
Which lines would be part of the output?
1. i = 0 j = 0
2. i = 1 j = 1
3. i = 0 j = 3
4. None of the above
> 選4, 什么都輸出, 這里是 java label標號的用法
#### 25
Consider the following code:
```
int i, j=0;
for( i=0;i<2;i++)
{
inner:
for(j=i; j<3; j++)
{
break inner;
}
System.out.println("i = "+i+" j = "+j);
}
```
Which **lines** would be part of the output?
1. i = 0 j = 0
2. i = 1 j = 1
3. i = 0 j = 3
4. None of the above
> 選 1 2,