不太清楚调用构造方法的顺序;
这个代码里,是不是先运行main里的Test22 t2 =new Test22();然后调用父类里的无参构造方法,接着发现main方法外面有
一个Test22 t1=new Test22();就继续调用父类里的无参构造方法的构造方法...就是先调用父类所有的构造方法在返回main方法.....
还是这里是main里面的Test22 t2 =new Test22();和main外面的Test22 t1=new Test22();发生冲突造成死循环了??
好似是java.lang.StackOverflowError 栈溢??class Test11 {
public Test11()
{
}}
public class Test22 extends Test11
{
public Test22()
{
} Test22 t1 = new Test22();
public static void main(String[] args)
{
Test22 t2 =new Test22();
}
}
这个代码里,是不是先运行main里的Test22 t2 =new Test22();然后调用父类里的无参构造方法,接着发现main方法外面有
一个Test22 t1=new Test22();就继续调用父类里的无参构造方法的构造方法...就是先调用父类所有的构造方法在返回main方法.....
还是这里是main里面的Test22 t2 =new Test22();和main外面的Test22 t1=new Test22();发生冲突造成死循环了??
好似是java.lang.StackOverflowError 栈溢??class Test11 {
public Test11()
{
}}
public class Test22 extends Test11
{
public Test22()
{
} Test22 t1 = new Test22();
public static void main(String[] args)
{
Test22 t2 =new Test22();
}
}
这句 “每次构造一个新的Test22对象都会嵌套构造一个新的肯定会内存溢出”是什么意思,不懂啊,可以详细说一下吗??
static{
System.out.println("我来了AB");
}
private static AB obj = new AB();
public static int num1 ; public static int num2 = 0; private AB() {
System.out.println("我来了AB构造函数");
num1++;
num2++;
// ystem.out.println(+num1);
// ystem.out.println(+num2);
} public static AB getInstance() {
System.out.println("我来了实例");
return obj;
}
}
public class CsdnTest {
static{
System.out.println("我来了CsdnTest");
}
public static void main(String[] args) {
System.out.println("我来了main");
AB obj = AB.getInstance();
System.out.println("obj.num1=" + obj.num1);
System.out.println("obj.num2=" + obj.num2);
double f = 111231.5585;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);
}
}