首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于字符串运算的问题

关于字符串运算的问题
EN

Stack Overflow用户
提问于 2009-11-11 14:33:43
回答 5查看 197关注 0票数 0

当我看到这段代码时,我对java字符串的理解出错了。我不知道这是怎么回事。有人能解释一下为什么吗?

代码语言:javascript
复制
public class NewClass {
    public static void main(String[] args) {
        String str=null;

        System.out.println(str+"Added");
    }
}

output:nullAdded

EN

回答 5

Stack Overflow用户

发布于 2009-11-11 14:38:07

字符串连接将空引用视为Java中的“空”引用。来自文档 for StringBuilder.Append(String)

字符串参数的字符按顺序添加,以参数的长度来增加序列的长度。如果str为null,则追加四个字符"null“。

基本上,您的代码类似于:

代码语言:javascript
复制
public class NewClass {
    public static void main(String[] args) {
        String str=null;

        System.out.println(new StringBuilder().append(str)
                                              .append("Added")
                                              .toString());
    }
}

这能让事情更清楚吗?

票数 11
EN

Stack Overflow用户

发布于 2009-11-11 14:38:20

当您使用+运算符时,两个操作数都通过String.valueOf方法转换为字符串(如果需要)。这将返回空引用的四个字符字符串" null“,而不是实际的空引用。

因此,null + "Added"等于"null" + "Added",因此也等于"nullAdded"

票数 2
EN

Stack Overflow用户

发布于 2009-11-11 14:39:32

您可能要做的是用空字符串初始化字符串:

代码语言:javascript
复制
String str = "";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1715533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档