关于Java实例化对象写在构造函数外面和里面的区别

Java中new出来的对象都存在堆内存中,指向对象的变量存在于栈中,而new对象的常量在方法区。如以下例子:

Integer inte = new Integer(10);

b72cb2839b0146868afc98bca763f462.png

我们首先要知道:关于无参构造中的作用:

  1、无参构造方法一般是用来初始化变量或者对象的等;  

  2、Java会自动给每个类添加一个默认的无参构造方法,但在自己有写有参构造的情况下,最好再添加一个无参构造方法,否则程序报错。

那么我们在写代码的过程中,会有两种方式去创建对象,其中第一种就是:先声明实例变量,然后在无参构造中创建对象;第二种是:直接new对象。我们要知道这两者的区别是,如以下例子:

c3cfa3855c22472c9a247a19993da54e.png

  1、前者(被注释的内容)是先在栈空间中申请了变量的存储空间,只有当调用无参构造的时候,才会将无参构造的对象在堆内存中申请存储空间;

  2、而后者则是同时在栈与堆中申请了内存空间。

虽说两者所占内存空间是相同的,但是在以后的开发中代码越写越多的情况下,如若每次都直接初始化对象,后面发现有的方法不需要使用了,这样就会导致内存溢出。所以一般都是先声明变量,告诉自己已经有这个对象了,先不需要实例化这个对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值