1.有关下述Java代码描述正确的选项是____。 java
public class TestClass { private static void testMethod(){ System.out.println("testMethod"); } public static void main(String[] args) { ((TestClass)null).testMethod(); } }
A.编译不经过
B.编译经过,运行异常,报NullPointerException
C.编译经过,运行异常,报IllegalArgumentException
D.编译经过,运行异常,报NoSuchMethodException
E.编译经过,运行异常,报Exception
F.运行正常,输出testMethod
想法:第一:静态方法的调用能够直接使用“类.方法名”,由于静态方法在对象建立前就存在了,他的使用不依赖对象是否被建立。也就是说这道题目在main中直接“TestClass.testMethod()”也是能够的。
第二:null能够被强制类型转换成任意类型的对象,也就是说若是testMethod方法是非静态的,那么在静态的main中能够经过((TestClass)null).testMethod()来调用该方法,编译经过,运行报错(NPE)。
2.该段程序输出结果是多少?
package algorithms.com.guan.javajicu; public class Inc { public static void main(String[] args) { Inc inc = new Inc(); int i = 0; inc.fermin(i); i= i ++; System.out.println(i); } void fermin(int i){ i++; } }
结果:0.
想法:1.在java中使用了中间变量缓存机制,i=i++;的过程以下:
temp=i;(右边的i)
i=i+1;(右边的i)
i=temp;(左边的i)
因此输出是0.
2.若是是i=++i,其过程以下:
i=i+1;(右边的i)
temp=i;(右边的i)
i=temp;(左边的i)
输出是 1.
3.在C/C++中结果是不同的。
3.选项中哪一行代码能够添加 题目中而不产生编译错误?
public abstract class MyClass { public int constInt = 5; //add code here
public void method() { } }
A.public abstract void method(int a);缓存
B.constInt = constInt + 5;spa
C.public int method();设计
D.public abstract void anotherMethod() {}code
想法:A是抽象方法,抽象类能够包含抽象方法,也能够不包含,虽然A 方法名是method,与题目中的方法同名,可是参数不一样,是重载方法对象
4.什么是方法的重载:
答:方法的重载是指在同一个类中,方法的名字相同,可是方法的参数,参数的个数,返回值的类型不一样。
方法重写是指子类和父类的关系子类重写父类的方法,可是方法名,参数类型,参数个数必须相同。
5.在类设计中,类的成员变量要求仅仅可以被同一package下的类访问,请问应该使用什么修饰词?
答:
不须要任何修饰词!!
6.该段代码的输出?
public class Spike { public static void main(String[] args) { Counter a = new Counter(); System.out.println(a.increment()); System.out.println(a.anotherIncrement()); Counter b = new Counter(); System.out.println(b.increment()); } } class Counter { private static int count = 0; public int increment() { return count++; } public int anotherIncrement() { return ++count; } }
答案:0,2,2blog
想法:1.count是静态变量,被全部对象共享,所以无论是a仍是b都会对count的值产生改变。ip
2.a.increment()执行以后,返回0,而后count值为1.
ci
3.a.anotherIncrement执行以后,返回2,count值为2rem
4.b.increment执行以后,返回2,count值为3.
1
2
3
4
5
6
|
public abstract class MyClass {
public int constInt = 5;
//add code here
public void method() {
}
}
|
public abstract void method(int a);
constInt = constInt + 5;
public int method();
public abstract void anotherMethod() {}