在Java中声明变量时,是否应该为其赋值?
我有一个具有以下行序列的代码:
Socket echoSocket = null;
... something ...
echoSocket = new Socket("taranis", 7);
我不明白我们为什么想要第一条线。我知道Java无法根据变量的值定义变量的类型。这就是为什么我们首先需要告诉echoSocket是一个变量,它有socket类型(第一行),然后我们再告诉echoSocket有一个特定的值(Socket类的一个对象)
但我不明白的是,为什么我们需要分配一个值两次?为什么我们要说echoSocket等于null
# 1 楼答案
如果未使用局部变量,则无需为其赋值。在必要之前,代码不应生成性地声明变量。JLS中有一章关于明确任务的内容有些枯燥
您的问题似乎与试块有关。资源处理应写成:
在这种情况下:
例外情况的捕获应在整个批次中进行。不要试图在try块上保存
如果你发现自己重复了很多样板文件,试试“执行周围”这个成语
# 2 楼答案
我使用的一般原则是:尽可能晚地声明变量
但是,不初始化变量有一个非常有用的情况:
因为
someString
在声明时是单位化的,如果else
子句没有设置值,Java编译器会抱怨单位化的值。如果你这样做,情况就不会是这样:这是一个很好的精神检查。以上不是编译错误,但这是:
# 3 楼答案
您不需要给
echoSocket
null值。(你在哪里读到的?)你可以随便选一个
或者在一行中完成
希望能有帮助
# 4 楼答案
技术作者并不总是写出最好的代码
就我个人而言,我只在编译器告诉我时才写初始值
# 5 楼答案
为什么您声明变量的时间早于它的有用值?如果要在两个不同的分支中赋值,有时这是必要的,但通常最好等到有了值,然后在一个语句中声明和赋值: