相关疑难解决方法(0)

为什么局部变量没有在Java中初始化?

有没有理由为什么Java的设计者觉得局部变量不应该被赋予默认值?说真的,如果实例变量可以给出一个默认值,为什么我们不能对局部变量做同样的事情呢?

它也会导致问题,如本评论中对博客文章的解释:

这个规则在尝试关闭finally块中的资源时最令人沮丧.如果我在try中实例化资源,但尝试在finally中关闭它,我会收到此错误.如果我在try之外移动实例化,我会收到另一个错误,指出它必须在try中.

很沮丧.

java variables initialization

96
推荐指数
7
解决办法
7万
查看次数

实例字段与局部变量的初始化

我一直想知道为什么在下面的例子中可以初始化实例字段(依赖它将具有其默认值)并访问它,而局部变量显然必须初始化,即使我将其初始化为默认值无论如何它会得到......

  public class TestClass
  {
    private bool a;

    public void Do()
    {
      bool b; // That would solve the problem: = false;
      Console.WriteLine(a);
      Console.WriteLine(b); //Use of unassigned local variable 'b'
    }
  }
Run Code Online (Sandbox Code Playgroud)

.net c# clr

18
推荐指数
2
解决办法
8949
查看次数

为什么可以在没有初始值的情况下声明变量?

我正在阅读Gilles Dowek的编程原理:

他说,也可以在不给它初始值的情况下声明变量,并且我们必须小心不要使用已经声明没有初始值并且没有赋值的变量.这会产生错误.

注意:本书的作者提到在Java上声明没有初始值的变量的可能性.

那么,为什么这个变量声明有效呢?我什么时候开始使用它?

java variables declaration

6
推荐指数
2
解决办法
2万
查看次数

"变量可能尚未初始化"的设计理性是什么?

众所周知,在Java中,需要在使用之前初始化局部变量(参见JLS)

局部变量(§14.4,§14.14)必须在使用之前通过初始化(第14.4节)或赋值(第15.26节)以可以使用明确赋值规则验证的方式显式赋予值(§14.4,§14.14) 16).

否则会收到编译器错误:

The local variable result may not have been initialized.
Run Code Online (Sandbox Code Playgroud)

这个设计决定的理由是什么?为什么编译器没有申报(如自动转换int x,double y,String foo等)一些默认值初始化的定义(0,0.0,NULL)?这样做有什么缺点吗?

java

6
推荐指数
1
解决办法
169
查看次数

标签 统计

java ×3

variables ×2

.net ×1

c# ×1

clr ×1

declaration ×1

initialization ×1