描述
题目和答案来自于阿里云大学 - 知乎专栏
题目
-
现在有如下一段代码
public class Test {
public int aMethod() {
static int i=0;
i++;
return i;
}
public static void main(String args[]) {
Test test = new Test();
test.aMethod();
int j = test.aMethod();
System.out.println(j);
}
}将产生哪种结果:
A. Compilation will fail
B. Compilation will succeed and the program will print“0”
C. Compilation will succeed and the program will print“1”
D. Compilation will succeed and the program will print“2”
-
如要在字符串s(内容为“welcome to mldn !! ”),中,发现字符't'的位置,应该使用下面哪种方法?
A.
mid(2,s);
B.
charAt(2);
C.
s.indexOf('t');
D.
indexOf(s,'v');
-
编译和运行下面代码可能会发生什么?
class Base {
private void amethod(int iBase) {
System.out.println("Base.amethod");
}
}
class Over extends Base {
public static void main(String args[]) {
Over o = new Over();
int iBase = 0 ;
o.amethod(iBase) ;
}
public void amethod(int iOver) {
System.out.println("Over.amethod");
}
}A. Compile time error complaining that Base.amethod is private
B. Runntime error complaining that Base.amethod is private
C. Output of Base amethod
D. Output of Over.amethod
-
现在有如下一段程序
class super {
String name ;
public super(String name) {
this.name = name ;
}
public void fun1() {
System.out.println("this is class super !"+name);
}
}
class sub extends super {
public void fun1() {
System.out.println("this is class sub !"+name);
}
}
class Test {
public static void main(String args[]) {
super s = new sub();
}
}运行上面的程序可能会出现的结果?
A. this is class super !
B. this is class sub !
C. 编译时出错
D. 运行时出错
-
现在有如下一段程序
class Happy {
public static void main(String args[]) {
float [][] f1 = {{1.2f,2.3f},{4.5f,5.6f}} ;
Object oo = f1 ;
f1[1] = oo ;
System.out.println("Best Wishes "+f1[1]);
}
}该程序会出现何种效果?
A. {4.5,5.6}
B. 4.5
C. compilation error in line NO.5
D. exception
-
在一个类文件中,导入包、类和打包是怎样的排列顺序?
A. package、import、class;
B. class、import、package
C. import、package、class
D. package、class、import
-
如果你试图编译并运行下列代码时可能会打印输出什么?
int i = 9 ;
switch(i) {
default:
System.out.println("default");
case 0 :
System.out.println("zero");
break ;
case 1 : System.out.println("one");
case 2 : System.out.println("two");
}A. default
B. default , zero
C. error default clause not defined
D. no output displayed
-
当你编译下列代码可能会输出什么?
class Test {
static int i ;
public static void main(String args[]) {
System.out.println(i);
}
}A. Error Variable i may not have been initialized
B. null
C. 1
D. 0
-
下面代码会存在什么问题?
public class MyClass {
public static void main(String arguments[]) {
amethod(arguments);
}
public void amethod(String[] arguments){
System.out.println(arguments);
System.out.println(arguments[1]);
}
}A. 错误,void amethod()不是static类型
B. 错误,main()方法不正确
C. 错误,数组必须导入参数
D. 方法amethod()必须用String类型描述
-
为Demo类的一个无形式参数无返回值的方法method书写方法头,使得使用类名Demo作为前缀就可以调用它,该方法头的形式为?
A.
static void method( )
B.
public void method( )
C.
final void method( )
D.
abstract void method( )
答案
ACDCC ABDAA
个人解析
在方法体内声明的变量是“局部变量”,而局部变量是不能用static修饰的,private、protected、public也是不能用的。
indexOf是String类的一个方法,作用是查找第一次出现参数的位置,没有则返回-1。
无论amethod方法是不是private,结果都是执行子类的amethod方法。区别是,如果不是private,子类的amethod方法是重写了父类的方法;如果是private,子类的amethod方法并没有重写父类的方法。
Java中,如果类里没有写构造方法,那么会默认有一个无参的构造方法。但是一旦手动写了构造方法,那么默认的无参构造方法就没有了。这道题是因为父类只有一个有参的构造方法,但是子类却没有,所以编译出错。
Java中的数组是对象,所以第四行没有问题。而f1[1]需要的是一个数组并且是一维数组,所以第五行编译出错。
无
在default中进入,在case 0中因为break跳出。
基本数据类型都有相应的默认值,其中int是0,char为‘\u0000’,boolean为false。
静态方法无法调用非静态方法。
静态方法可以用类名.方法名直接调用。