专栏首页Java进阶之路java中String的一个小陷阱

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",所以会出这样的结果。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • IK分词器访问远程词典功能实现

    IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。最...

    神秘的寇先森
  • jdk运行模式由client vm切换到server vm

    配置文件的位置如下(注意为{JRE_HOME不是JDK_HOME}): 若为64位操作系统 {JRE_HOME}/lib/amd64/jvm.cfg 若为...

    神秘的寇先森
  • Java8新特性实践

    神秘的寇先森
  • Go 切片使用绕坑指南

    不知道大家有没有发现在一个函数内部对切片参数进行了排序后也会改变函数外部原来的切片中元素的顺序,但是在函数内向切片增加了元素后在函数外的原切片却没有新增元素,更...

    KevinYan
  • Android点将台:你敢摸我猫 [- IPC -]

    张风捷特烈
  • JAVA开发规范常用的技巧总结(共12个)

    例如:UserService,但是以下情景例外:DO / BO / PO / DTO / VO。

    牛油果
  • 《Spring Boot开发:从0到1》第11章 Spring Boot应用监控第11章 Spring Boot Actuator与应用监控

    Spring Boot的Actuator 将应用的很多信息暴露出来,如容器中的 bean,自动配置时的决策,运行时健康状态, metrics等等。Actuato...

    一个会写诗的程序员
  • 【javascript】详解javaScript的深拷贝

    前言: 最开始意识到深拷贝的重要性是在我使用redux的时候(react + redux), redux的机制要求在reducer中必须返回一个新的对象,而不能...

    外婆的彭湖湾
  • Linux C++ 使用valgrind 检查内存泄漏

    内存泄漏检测 主要看definitely lost:这里如果是0,说明没有会导致程序崩溃读的内存泄漏问题。

    多凡
  • 浅谈JAVA设计模式之——原型模式(Prototype)

    冰河

扫码关注云+社区

领取腾讯云代金券