Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我会得到Ja.lang.StackOverflower错误_Java_Exception_Exception Handling_Stack Overflow - Fatal编程技术网

Java 为什么我会得到Ja.lang.StackOverflower错误

Java 为什么我会得到Ja.lang.StackOverflower错误,java,exception,exception-handling,stack-overflow,Java,Exception,Exception Handling,Stack Overflow,为什么我要使用java。在此处输入代码lang.StackOverflower在下面的程序中出现异常 public class Image { Image i=new Image(); public Image() { } private byte[] image_array; private String image_name; private long id; public static void main(String[] args) {

为什么我要使用java。
在此处输入代码
lang.StackOverflower在下面的程序中出现异常

public class Image {

  Image i=new Image();

  public Image() {
  }


  private byte[] image_array;
  private String image_name;
  private long id;
  public static void main(String[] args) {

        Image ii=new Image();
   }  
}

因为当行
Image ii=newimage()时
main
内执行,它创建
Image
的实例,并在其中写入行
Image i=newimage()

这意味着您要不断重复创建新的
图像
实例


只需像图像i那样保存它并根据需要对其进行初始化。

一旦实例化了类
Image
的对象,就开始创建它。在此过程中,它接收类型为
Image
的字段
i
,该字段用类为
Image
的新对象初始化。这个会再次初始化,以此类推


只需删除该行
Image i=newimage()

和提示:了解java命名约定。A) 除了常数B)使用有意义的名称<代码>图像i
。。。没有任何意义
ii
更糟糕。很抱歉,谁在投票一个非常明显重复的问题?我认为这个问题不太明显,因为构造函数实际上是空的,然后有一个实例字段调用该构造函数。因此,解释需要参考JLS以及实例字段是如何初始化的。如果您了解java类的基本知识,这就非常明显了instanciation@jhamon,但重复问题并没有真正解决这个问题。当构造函数为空时,什么触发递归?调用堆栈不应该到此结束吗?我要求对正在发生的事情进行更好的解释;为什么它会重复创建实例?到底是什么导致了无休止的递归?代码中的任何地方都没有显式的递归调用。@Mick助记符,这是因为
Image i=new Image()
在类
图像
中,它是一个实例变量。创建该类的实例时,将初始化实例变量(如果未显式初始化,则默认为null(对于对象))。认为这很容易理解;-)我在寻找一个解释,它涉及到实例变量初始值设定项w.r.t.的执行顺序在哪里指定构造函数。