我是Java的新手,我正在尝试一些示例来了解它的工作原理。
我在理解以下代码为何失败时遇到问题。我知道导致错误的行,但我不知道为什么。我制作了两个类,Class1
和Main
,其代码是用两个单独的.java文件编写的:
public class Class1
{
int var;
public void method1 ()
{
System.out.println(var);
}
Class1 obj1 = new Class1(); // this is the line that causes the error
}
和
public class Main
{
public static void main (String[] args)
{
Class1 obj = new Class1();
obj.method1();
}
}
它可以很好地编译,但是当我运行java Main
它时,它只会打印数百次错误
at Class1.<init>(Class1.java:8)
我尝试运行java Main | more
(我正在使用Unix Bash),但是管道以某种方式被忽略了,并且我看不到错误消息的第一行。也不java Main > log.txt
输出重定向到一个文本文件的工作。如果删除该行,即如果不在类主体中创建Class1
对象obj1
,则Class1
一切正常。谁能告诉我那条线怎么了?
谢谢
问题是您正在无限循环中创建Class1对象。
在main方法中创建Class1对象时,它将初始化您在Class1主体中定义的所有变量。但是,由于您还在Class1主体内创建了一个新的Class1对象,因此它将继续创建Class1对象,并且在某些时候,它将导致堆栈溢出错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句