一:对象实例化问题:
public class Rectangle { public int width = 3; public int height = 4; public int area() { return width * height; }}则如下代码输出结果为:Rectangle rectangle;rectangle.height = 5;System.out.println(rectangle.area());
A.15B.有编译错误,程序不能运行C.12D.0
D、rectangle没有被初始化,因此报错。 Rectangle rectangle=new Rectangle()
二:类型转换问题
如下赋值语句中,有语法错误的是?A.float f1 = 1.2;B.float f1 = 1.2fC.float f1 = 1;D.float f1 = 0xAE;\
注意double类型可以不加后缀,所以小数不加上f后缀,则默认为double类型,若不是强制转换则编译不通过。
三:switch语句
对于Java1.7及之后版本,如下不能用于switch的类型是:A.StringB.intC.charD.double
double和float是不精确的数值,不用于判断,但是String类型可以在1.7后使用
四:赋值问题
如下赋值语句,有编译错误的是?A.byte b = -127;B.int i = (byte)512;C.byte b = 129;D.byte b = -0;
byte b = (byte) 129; 需要强制转,且结果是-2.
五:编译问题:
Java有“一次编译,到处运行”的说法,此种说法中编译的结果是:A.机器码B.符号表C.字节码D.中间代码
class文件,即为字节码(bytecode)文件。
六:main函数:
下列关于main方法的描述中,错误的是?A.main方法是Java程序的入口B.main方法格式为public static void main(String[] args) { //Your code here}C.B选项中所描述格式中形参args不能更改,如果将args改为arguments则不能编译通过D.main方法可以被重载
形参名字可以随意更改,形参类型不可以更改,必须是String[].
main方法可以被重载。可以在类中写一个同名函数,参数等不一致,是重载,符合要求
七:构造函数问题(重点)
Given the following class class MyNumber{ private int num = 5; public MyNumber(int num) { this.num = num; } public int getNum() { return num; } public void setNum(int num) { this.num = num; }} What is output after the executation of following code? MyNumber obj1 = new MyNumber(); MyNumber obj2 = new MyNumber(10); obj2 = obj1; obj2.setNum(20); System.out.println(obj1.getNum() + “,” + obj2.getNum());
A.5, 20B.5, 10C.20,20D.编译错误
MyNumber有一个带形参的构造函数,编译器不会自动添加无参的构造函数。因此在创建obj1的时候,MyNumber obj1 = new MyNumber();,找不到相应的构造函数,报错。
八:对象赋值问题
Given the following class:class Mixer { Mixer() { } Mixer(Mixer m) { m1 = m; } Mixer m1; //注意m2.m1虽然没有被被赋值,但是由于在类中定义,所有有初值nullpublic static void main(String[] args) { Mixer m2 = new Mixer(); Mixer m3 = new Mixer(m2); m3.go(); Mixer m4 = m3.m1; m4.go(); Mixer m5 = m2.m1; m5.go(); //m2中m1未被赋值,为null,调用方法会报错 } void go() { System.out.print("hi "); }}
A.Compilation failsB.hi hi hiC.hi hi, followed by an exceptionD.hi, followed by an exception