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();

	}

}

运行结果:

分析:

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

时间: 2024-09-29 15:34:16

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

js,java,浮点数运算错误及应对方法

js,java,浮点数运算错误及应对方法 一,浮点数为什么会有运算错误 IEEE 754 标准规定了计算机程序设计环境中的二进制和十进制的浮点数自述的交换.算术格式以及方法. 现有存储介质都是2进制.2进制的进制基数是2,那么一个数字只要被因素包含大于2的质数的数除,都会产生无限循环小数.无限循环小数和无理数都无法,和非无限循环的有理数一起用同一种方式存储到存储介质上的同时还保持计算的兼容性. 对于无限循环小数,可以设计一种格式存储到介质上,但是同时又要和非无限循环的有理数能够计算,效率应该会变

Java几种建立实例的方法

1.new something obj=new something(); 2.clone 根据现有的对象实例来建立里一个新对象实例. 只限于实现了java.lang.Cloneable接口的类.否则会抛出CloneNotSupportedException异常. 如下,则可根据当前对象本身建立另一个对象实例(但并未利用构造方法). class Something { //codes public Something createClone() { Something obj=null; try

Java三种嵌入jsp的方法

一.表达式标签<%=   %> 作用:1.计算表达式的值 <%=1+1%> 2.在页面显示表达式的值 <%=pageContext.getAttribute("ting")%> 注意:<%=%>不能有分号 二.声明表达式<%!   %> 作用:声明变量和函数,可以由Java代码调用.例如<%! String name="yvwenting"%> 注意:1.<%!  %>中可以出现分号

程序员在页面友好性上常犯的5种错误以及改正方法

我是一个性情乖戾的Web用户,但我想这也帮助促使我成为了一名优秀的Web开发人员.当我看到一个网站上有让人不爽的设计时就会非常的恼怒,一些很简单的东西为什么做不好?下面是5种常见的可用性方面的错误,以及如何纠正这些问题的方法.给自己方便,也与人方便,确保自己不要犯这样的错误. 使用表达submit事件,不要用click事件:请用表单标签form! 我不知道遇到过多少次,当我使用回车键提交一个表单时(或手机上用箭头/输入键),却什么都没发生.我只好又用鼠标点击提交按钮,表单终于有了反应.这是我最痛

JAVA四种遍历Map的方法

import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set; /** Created by song on 2019/1/17.*/public class MapT {public static void main(String[] args) {Map<Integer,String> map=new HashMap<>();map.put(1,"

maven执行打包命令(mvn package)是出现Java heap space错误的解决方法(windows环境)

今天执行maven的打包命令出现时内存溢出的错误,以下为解决方法 找到mvn目录下bin目录里的mvn.bat, 找到@REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000, 在这局下添加以下语句: set MAVEN_OPTS=-Xms256m -Xmx768m -XX:PermSize=128m -XX:Ma

VMware虚拟化三种备份和恢复方法的对比分析

服务器虚拟化,尤其是VMware形式的服务器虚拟化使IT人员获益良多,这么说一点也不为过.据我们所见,服务器虚拟化能解决服务器扩张.资源消耗.服务器扩张.能源消耗.高可用性等相关问题.服务器虚拟化也使我们有更多的时间解决其它的迫切问题,如企业资源预案升级.存储项目再三迁移或者为什么我的青蛙总不回家的问题.尽管VMware提供封装技术和抽象技术,使我们受益匪浅,但数据保护领域发生的基本变革也带来了各项挑战.即使出现了VMware虚拟化,备份人员依然是牢骚最多的IT人员.最大的挑战在于保证数据的一致

Java连载56-toSting方法和equals方法

Java连载56-toSting方法和equals方法一.关于object中的toString?方法: 1.SUN公司在Object类中设计toString方法的目的:返回java对象的字符串的表示形式. 2.在现实的开发过程中,Object里面的toString方法已经不够用了,因为Object的toString方法实现?的结果不满意.Object中的toString方法实现的结果不满意.Object中的呢toString?方法要被重写了. 3.println打印的如果是对象的话,那么就会默认

Java几种常用的实现排序方法

import java.util.Random; public class NumberSort{ /** * 私有构造方法,禁止实例化 */ private NumberSort(){ super(); } /** * 冒泡排序 * 比较相邻的元素.如果第一个比第二个大,就叫唤他们两个位置. * 对每一组相邻的元素作同样的工作,从开始的第一对到结束后的最后一对,这样剩下的最后一个应该是最大的数. * 针对所有元素重复以上操作,除了最后一个. * 持续对越来越少的数进行以上的操作,直到没有任何一