锁定老帖子 主题:一眼能说出它的结果
精华帖 (1) :: 良好帖 (0) :: 隐藏帖 (10)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-31
我也看出这个结果的,因为我以前这么写过,打出的log我傻了。
|
|
返回顶楼 | |
发表时间:2012-03-31
hoarhoar 写道 我一眼就料到了结果,我给大家分析一下:
String s = null; s = s+"word"; //在这一步先对s转字符串,如果s是对象,调用toString(),如果是null,转字符串就是"null",与"word"相加就是nullword 嘱咐一点,在java中运算顺序:从左向右。 精辟 |
|
返回顶楼 | |
发表时间:2012-03-31
在世界的中心呼喚愛 写道 s=null 是一个地址。
s=null+"world" 又是一个地址 所以 是 hello null world s = null 是一个地址 s.hashCode();可以运行 有值 |
|
返回顶楼 | |
发表时间:2012-03-31
kinglun 写道 在世界的中心呼喚愛 写道 s=null 是一个地址。
s=null+"world" 又是一个地址 所以 是 hello null world s = null 是一个地址 s.hashCode();可以运行 有值 不行诶,我运行出来是空指针异常 |
|
返回顶楼 | |
发表时间:2012-03-31
kinglun 写道 在世界的中心呼喚愛 写道 s=null 是一个地址。
s=null+"world" 又是一个地址 所以 是 hello null world s = null 是一个地址 s.hashCode();可以运行 有值 我没说清楚,是“占一个地址” |
|
返回顶楼 | |
发表时间:2012-03-31
答案是----> hello nullword
编译运行了一边,确定是在这个答案 是word 不是 world |
|
返回顶楼 | |
发表时间:2012-03-31
最后修改:2012-03-31
sinly 写道 public class HelloWorld { public static void main(String args[]) { String s = null; s = s+"word"; System.out.println("hello " +s); } } 。。。我是给悲剧了一下,看来底子不行 public static void main(java.lang.String[] args); 0 aconst_null 1 astore_1 [s] 2 new java.lang.StringBuilder [16] 5 dup 6 aload_1 [s] 7 invokestatic java.lang.String.valueOf(java.lang.Object) : java.lang.String [18] 10 invokespecial java.lang.StringBuilder(java.lang.String) [24] 13 ldc <String "word"> [27] 15 invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [29] 18 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [33] 21 astore_1 [s] 22 getstatic java.lang.System.out : java.io.PrintStream [37] 25 new java.lang.StringBuilder [16] 28 dup 29 ldc <String "hello "> [43] 31 invokespecial java.lang.StringBuilder(java.lang.String) [24] 34 aload_1 [s] 35 invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [29] 38 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [33] 41 invokevirtual java.io.PrintStream.println(java.lang.String) : void [45] 44 return 关键是在于java.lang.String.valueOf方法: public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } 环境: java version "1.6.0_31" Java(TM) SE Runtime Environment (build 1.6.0_31-b05) Java HotSpot(TM) Client VM (build 20.6-b01, mixed mode, sharing) |
|
返回顶楼 | |
发表时间:2012-03-31
最后修改:2012-03-31
PrintStream.java
/** * Prints a string. If the argument is <code>null</code> then the string * <code>"null"</code> is printed. Otherwise, the string's characters are * converted into bytes according to the platform's default character * encoding, and these bytes are written in exactly the manner of the * <code>{@link #write(int)}</code> method. * * @param s The <code>String</code> to be printed */ public void print(String s) { if (s == null) { s = "null"; } write(s); } Sysyem.out is PrintStream |
|
返回顶楼 | |
发表时间:2012-03-31
大家怎么还讨论这么简单地问题,难道这个网站里不都是高手吗
|
|
返回顶楼 | |
发表时间:2012-03-31
哈哈。。。我前几天刚刚测试过!那天做项目时我也悲剧了,死活通不过,已跟踪发现滴问题!然后单独写了这么个程序,hello nullworld!
|
|
返回顶楼 | |