首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串初始化问题

字符串初始化问题
EN

Stack Overflow用户
提问于 2016-01-29 09:49:05
回答 4查看 138关注 0票数 3

为什么我有The local variable arcType may not have been initialized错误?

第一宗案件:

代码语言:javascript
复制
String arcType;

if (//somecondition) {
 arcType += "Test";     // Here it show the error
 System.out.println(arcType);
}

但低于正常工作状态。

第二宗案件:

代码语言:javascript
复制
 String arcType = null;

if (//somecondition) {
 arcType += "Test";     // It's working fine
 System.out.println(arcType);
}

Output of the above program : nullTest

如果我用space初始化我的space,那么space就会与Test连接。使用修剪空间将删除,但我不想使用修剪。

我的问题是:

  1. 为什么第一次出现The local variable arcType may not have been initialized错误?
  2. 在第二种情况下,当我用null初始化字符串时,为什么得到输出nullTest

我只想输出Test

EN

回答 4

Stack Overflow用户

发布于 2016-01-29 09:52:28

默认情况下,只初始化成员和类变量本地变量不是。

2-只有当传递的对象不是toString()时才隐式调用null。如果是,则打印文字"null"。因此,为了获得"Test"作为输出,需要将字符串初始化为空字符串。

来自文档:Objects#toString()

返回对非空参数调用toString和对空参数调用" null“的结果。

票数 4
EN

Stack Overflow用户

发布于 2016-01-29 09:51:29

然后,您应该插入空:

代码语言:javascript
复制
String arcType = "";

在方法内部,所有声明的变量在使用之前都必须初始化。

Null也是一个值,所以当您将字符串引用为null并将其连接时,它将使用null + concate值。

票数 1
EN

Stack Overflow用户

发布于 2016-01-29 09:57:45

  1. 耀非常巧妙地得到了错误,就像它说的--变量可能不会被初始化(如果条件是假的,它不会)。
  2. +=运算符是s = s + "test"的语法糖。因为最初的s是空的,所以你会得到‘null +’test‘。

应该将s初始化为空字符串`

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35081388

复制
相关文章

相似问题

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