第十三题:畜牧场
public static void main(String[] args) {
final String pig = "Length: 10";
final String dog = "length: "+pig.length();
System.out.println("Animals are equal:"+pig == dog);
}
//控制台打印:
//false
这题首先考查 == ,==是比较是否是同一对象,pig是一个常量,而dog是经过运行方法调用得到的字符串,两个虽然内容相同但,不是同一对象,所以是false。还有就是+优先级比==高,最终只会输出false;
第十四题:转义字符的溃败
public static void main(String[] args) {
System.out.println("a\u0022.length()+\u0022b".length());
System.out.println(\u0022 + \u0022);
}
//控制台输出:
//2
//+
因为\u0022是双引号的Unicode编码,java在处理字符常量时,会先将Unicode字符转成原本的字符。
“a\u0022.length()+\u0022b”.length() 就是 “a”.length()+“b”.length(),所以结果为2
\u0022 + \u0022 就是 “+”,所以结果为+
第十五题:令人晕头转向的Hello
/**
* from F:\TestRoot\apps\al\units\include\PolicyHome.idl
*/
public static void main(String[] args) {
System.out.print("Hell");
System.out.println("o world");
}
上面的代码是不能编译通过的,因为有个\u,表示这个一个Unicode字符,后面应该跟四个16进制数字,但是没有,所以报错。解决方法是多加一个\表示转义,\\unit就不会错。
第十六题:行打印程序
public static void main(String[] args) {
char c = \u000A;
System.out.println(c);
}
上面代码是不能编译通过的,\u000A是换行符LF即\n的Unicode编码,java将Unicode编码换成原本符号,实在去掉注释和空格之前就实行的。