java中String的一个小陷阱

首先大家看一段代码

public class HelloWorld {  
    public static void main(String args[]) {  
        String s = null;  
        s = s+"word";  
        System.out.println("hello " +s);  
    }  
}  

大家猜猜输出结果是什么?hello word吗?
错了,答案是:hello nullword
为什么会是这样的结果呢?
这是因为:s = s+"word"; 等价于 s = String.valueOf(s)+"word"; Integer,Double都一样。
分析一下String的源码可以得出答案:

public static String valueOf(Object obj) {  
  return (obj == null) ? "null" : obj.toString();  
}  

String的valueof方法参数为obj的时候,如果obj为Null,会把null转为"null",所以会出这样的结果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,151评论 0 7
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • “‘谁?白马王子?’‘童话故事中才会有。’” 记得小时候,每晚都要闹着妈妈讲一则童话故事。直到听见英勇的王子打败了...
    王清欢COOL阅读 319评论 0 0
  • 上海的冬天真的到了 今天已经零下了 在家里一直开着空调 找到了一个教程 觉得非常适合这个时节 于是就画了下来 ...
    大画玲珑阅读 476评论 4 2