Java一种错误的实例化方法:在默认无参构造函数中进行实例化

原创 2015年04月25日 16:07:02

Java一种错误的实例化方法:在默认无参构造函数中进行实例化

代码如下:

package Construction_test;

public class A {
	
	static int i=0;
	
	public A() {  //默认构造方法
		i++;
		System.out.println("---before--- " + i);
		A a2 =new A();   //实例的时候调用无惨构造方法
		System.out.println("---after---");
	}

	public static void main(String[] args) {
		
		A a1 =new A();
		
	}

}

运行结果:


分析:

这种写法在编译时并不会报错,但在运行的时候会造成严重后果,即无参构造函数自身的循环调用,最终导致内存溢出。因此,在写类似的代码时要特别注意该情况的发生。



Java中类的构造方法

constructor;构造函数。在创建对象的时候,对象成员可以由构造函数方法进行初始化。new对象时,都是用构造方法进行实例化的; 例如;Test test = new Test("a"); //...
  • zw1996
  • zw1996
  • 2016年10月20日 23:17
  • 6819

Activity缺少无参默认构造方法,产生实例化错误InstantiationException

Java代码   Android 2.3.3        Eclipse Version: 3.7.0       LogCat        主要错误:  ...

JAVA子父类中构造函数的特点-子类实例化过程

//仅作为学习笔记 /* 子父类中的构造函数 在对子类对象进行初始化时,父类的构造函数也会运行 那是因为子类的构造函数默认的第一行有一句隐式的语句super() super():会访问...

Java性能优化(3):通过私有构造函数强化不可实例化的能力

有时候你可能会编写出只包含静态方法和静态域的类,这样的类有一些很不好的名声,因为有些人在面向对象的语言中滥用这样的类来编写过程化的程序。尽管如此,它们也确实有它们特有的用处,我们可以利用这种类,把操作...

NO7.java学习笔记【面向对象、栈内存、堆内存、构造函数、this、super、继承、覆盖、对象实例化、final】

一、理解面向对象: 面向过程:强调的是功能行为。 面向对象:将功能封装进对象,强调具备了功能的对象。 面向对象是基于面向过程的。 二、JAVA把内存分为两种:栈内存和堆内存。 //在函数中定义的一些基...

Java基础:类的实例化、static、父类构造函数执行顺序

重温java基础,以免自己以后犯原则性错误,这是最基本,最基础的东西。 直接上代码: A.java public class A { int a1 = 8; int a2 = getA2(); ...

java面向对象-子父类中构造函数的特点-子类实例化过程super

/* 3,子父类中的构造函数 在对子类对象进行初始化时,父类的构造函数也会运行 那是因为子类的构造函数默认第一行隐式的语句super(); super():会访问父...

【Java基础】类的实例化、static、父类构造函数执行顺序

重温java基础,以免自己以后犯原则性错误,这是最基本,最基础的东西。 先看结论: 一个类的实例化过程: 1,首先会执行类中static代码块(不管代码块是否在类的开头还是末尾处),如...
  • zhlyks
  • zhlyks
  • 2015年12月14日 20:06
  • 368

Java初始化-静态代码块、实例化代码块和构造函数的区分

静态代码块、实例化代码块和构造函数代码块执行代码,如下:public class People { public static int num = 0;//静态变量初始化 St...
  • sxnice
  • sxnice
  • 2016年12月31日 18:45
  • 195
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java一种错误的实例化方法:在默认无参构造函数中进行实例化
举报原因:
原因补充:

(最多只允许输入30个字)