##看别人博客,发现这些题目还是有一定的迷惑性的,因此就在博客中记录下来。
3)下列选项中,哪一项能够正常编译: C
A:int i = Integer.valueOf(1.2);
理由:Integer.valueOf(int/String);只有这两种参数
B:char c = "a";不能将字符串类型转化为字符型
C:byte b = 127;
D: float f = 1.3;理由:不能将double型转换为float类型
4)下面代码的运行结果是:A
public static void main(String[] args){
String s;
System.out.println("s = " + s);
}
A:由于String s没有初始化,代码不能通过编译;
B:抛出NullPointException异常
C:输出s=;
D:输出s = null;
要是我们没有掌握好,我们可能就会选D这个错误的选项,上题中的选择A的原因就是,局部变量必须得初始化;
但是,如果我们某个类有一个String类型的属性,默认就用“null”进行初始化,当我们进行这个属性的输出的时候就选择D这个选项。
6)上面语句一共产生了多少个对象? 答案:A
String a = “aaaaaa”;
String b = a.substring(2, 3);
String c = a.toString();
String d = new StringBufer(a).toString();
A:3个; B:4个 C:5个 D:6个
上题解析:第一个是一个对象,第二个也是一个对象,第三个与第一个对象是同一个对象(这个就是一个字符串的缓冲池的概念在里面),第四个又是一个新对象(因为他用new就是在强调我想要一个新对象,不要旧的);如果还有这样一个表达式:String str=new String(“aaaaaa”);这个也是一个新的对象(只要使用new产生的对象均是新的对象),也上面的对象都不一样。
7、下面程序的输出结果是:C
A:输出null; B:抛出异常 C:输出0; D:输出1
package org.wrh.programbeautiful;
public class TestDemo01 {
private static int i;
public static void say(){
System.out.println(""+i++);
}
public static void main(String[] args) {
((TestDemo01)null).say();//这个不知道为什么输出为:0
// say();这个结果不用多少为 1,
}
}
将null类型强制转换为TestDemo01类型,然后调用TestDemo01类中的say函数,但是为什么输出为0呢???
懂的人可否给我讲解一下,谢谢
上面的题目来源见这里