0

如果我有许多对象引用需要(在一个方法中)初始化为默认值并且我不想用很多行来混淆我的代码,那么最好的方法是什么:

String name = null;  
String address = null;  
String type = null;  
String edition = null;  
String year = null; 

我有时会使用:

String name, address, type, edition, year;
name = address = type = edition = year = null;

有没有更好的办法?这种方式可以吗?

编辑:这些是实例变量。这个问题的目的是(如标签所示)改进我的代码风格。我只想在遇到这种情况时尽可能生成最干净的代码和人类可读的代码。我要回答的是经验丰富的编码人员提供的一些最佳实践建议,我对解释 java 中变量的变量初始化如何工作不感兴趣,因为这与这个问题无关。

EDIT2:这些变量需要初始化。我知道java中变量初始化的基本规则。

4

7 回答 7

2

编译后两种方式的作用相同。但最好使用第一种方式,因为它更具可读性和易于理解。但是您应该根据上下文使用变量。

于 2013-09-05T10:29:15.350 回答
2

默认情况下,非原始对象是null. 所以,这意味着:

String name = null; 

相当于:

String name;

请注意,这仅适用于班级成员。局部变量的行为不同。

于 2013-09-05T10:31:43.320 回答
2

Java 编码约定(第 10.4 节)不鼓励在一个语句中进行多个赋值。由于缺乏可读性,在任何严肃的商业软件开发中,我都没有在一个语句中看到多个任务。我强烈建议使用单独的作业。

有关更多详细信息,请参阅我对几乎相同问题的回答。

于 2013-09-05T11:04:43.987 回答
1

不仅第一个更容易理解,第二个将在您决定更改其中一个变量的初始值的情况下产生额外的工作。然后你必须重组整个代码。不建议这样做。此外,请记住,这仅适用于null不可变对象的情况,并且由于您不应在不同的代码样式之间切换,您应该使用适用于各种初始值的模式。换句话说:单独初始化变量。如果您想将一个或一些变量转换为编译时常量,这也会有所帮助。

于 2013-09-05T10:35:19.810 回答
0

根据Datatypes,您无需分配null给对象实例变量 ,Fields that are declared but not initialized will be set to a reasonable default by the compiler在您的情况下,它将null默认设置为。

于 2013-09-05T10:36:02.657 回答
0

唯一的宣言

String name, address, type, edition, year; 

足够。因为在 Java 中,String 是一个类,如果没有任何对象分配给它,则每个 String 引用变量都被初始化为 null。

String name, address, type, edition, year;

它的意思是

String name = null;  
String address = null;  
String type = null;  
String edition = null;  
String year = null; 

所以不需要像这样声明对象并将它们显式初始化为空。

于 2013-09-05T10:39:29.383 回答
0
String name, address, type, edition, year=null; 

你为什么不这样做。这使您的代码按预期更清洁。

于 2013-09-05T10:43:18.267 回答