1 下列代码描述正确的是
A: 代码可以编译运行,输出“AB.AB”。
B: 代码可以编译运行,输出“A.A”。
C: 代码可以编译运行,输出“AB.B”。
D: 代码可以编译运行,输出“A.B”。
答案:C
解析:
引用a指向对象A
引用b指向对象B
引用x指向对象A
引用y指向对象B
在operate方法中,引用x指向的对象A被连接了B,对象A也就被改变为AB
然后又把引用y指向了x所指向的对象地址,也就是此时引用a,x,y指向同一个对象AB
而引用b没有发生任何变化,依旧指向对象B。
Java 中参数的传递,都是值传递,并不是引用传递,
图解:
2 下列描述正确的是
A: 输出结果 :13
B: 语句:b6=b4+b5编译出错
C: 语句:b3=b1+b2编译出错
D: 运行期抛出异常
答案:C
解析:
被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;
在编译时就已经变为b6=10了而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。
Java中的byte,short,char进行计算时都会提升为int类型。
3 下列哪种说法是正确的
A: 实例方法可直接调用超类的实例方法
B: 实例方法可直接调用超类的类方法
C:实例方法可直接调用其他类的实例方法
D: 实例方法可直接调用本类的类方法
答案:D
解析:
类方法就是静态方法。其它的就是实例方法
实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,但类方法不能访问实例变量。实例方法必须由实例对象来调用,而类方法除了可由实例对象调用外,还可以由类名直接调用。
另外,在类方法中不能使用 this 或 super。 关于类方法的使用,有如下一些限制:
1 在类方法中不能引用对象变量。
2 在类方法中不能使用super、this关键字。
3 在类方法不能调用类中的对象方法。
与类方法相比,实例方法几乎没有什么限制:
1 实例方法可以引用对象变量(这是显然的),也可以引用类变量。
2 实例方法中可以使用super、this关键字。
3 实例方法中可以调用类方法。
4 下列描述正确的有哪些
byte b1=1,b2=2,b3,b6;
final btye b4=4,b5=6;
b6=b4+b5;
b3=(b1+b2);
System.out.println(b3+b6);
A: 输出结果:13
B: 语句:b6=b4+b5编译出错
C: 语句:b3=b1+b2编译出错
D: 运行期抛出异常
答案:C
解析:
被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了
而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。
Java中的byte,short,char进行计算时都会提升为int类型。
5 下列代码输出正确的是
A:505000
B:0
C:510050
D:5050
答案:B
解析:
这是因为jvm在处理i = i++时, 会建立一个临时变量来接收i++的的值,然后返回这个临时变量的值,返回的值再被等号左边的变量接收了,这样就是说i虽然自增了但是又被赋值了0,这样输出的结果自然就是0了。
count = count ++的原理是:
temp = count;(左count)
count =count +1;(右count)
count = temp; 一直为0(左count)
count = ++count 的原理
temp= count +1 (右count)
count = temp (左count)