Rom*_*man 2 java variables types object variable-assignment
我有一个代码,其代码如下:
Socket echoSocket = null;
... something ...
echoSocket = new Socket("taranis", 7);
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我们想要第一线.我知道Java无法从其值中定义变量的类型.这就是为什么首先我们需要告诉echoSocket是具有Socket类型的变量(第一行),而且我们认为echoSocket具有一定的值(类Socket的对象).
但我不明白为什么我们需要分配两次值?为什么我们要说echoSocket等于null?
我使用的一般原则是:尽可能晚地声明变量.
但是,有一个非常有用的情况是不初始化变量:
String someString;
if (/* some condition */) {
someString = "foo";
} else {
someString = "bar";
}
Run Code Online (Sandbox Code Playgroud)
因为someString,如果该else子句没有设置值,Java编译器会抱怨单位化值,因此在声明时是单元化的.如果你这样做,情况就不是这样了:
String someString = null;
if (/* some condition */) {
someString = "foo";
} else {
// do nothing
}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的理智检查.以上不是编译错误,但这是:
String someString;
if (/* some condition */) {
someString = "foo";
} else {
// do nothing
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
244 次 |
| 最近记录: |