[Java学习笔记]new 运算符

new 运算符

Java 中一般使用 new 来创建对象,它可以动态地为一个对象分配地址,这个内存空间分配在内存的堆区。堆是用来存放由 new 创建的对象和数组,即动态申请的内存都存放在堆区。通用格式如下:

classname obj = new classname();

举例:

public class Test {
	public static void main(String[] args) {
		String a = "皮卡丘";
		String b = new String("皮卡丘");
		String c = "皮卡丘";
		String d = new String("皮卡丘");
		System.out.println(a==b); // == 用来比较两个对象在堆区存放的地址是否相同 
		System.out.println(a==c);
		System.out.println(b==d);
		System.out.println(a.equals(b));  //比较使用 new 创建的对象具体的值,需要通过“equal()”方法来实现,这样才是比较引用类型变量具体值的正确方式。
		System.out.println(a);
        System.out.println(b);
	}
}

--------------------
false
true
false
true
皮卡丘
皮卡丘

不同方式定义字符串时堆和栈的变化:

  1. String a; 只是在栈中创建了一个 String 类的对象引用变量 a
  2. String a = “皮卡丘”; 在栈中创建一个 String 类的对象引用变量 a ,然后查找栈中有没有存放 ”皮卡丘“ ,如果有则直接指向”皮卡丘“,如果没有,则将”皮卡丘”存放进栈,再指向
  3. String a = new String(“皮卡丘”); 不仅在栈中创建一个 String 类的对象引用变量 a,同时也在堆中开辟一块空间存放新建的 String 对象“皮卡丘”,变量 a 指向堆中的新建的 String 对象”皮卡丘“

new 运算符是在运行期间为对象分配内存的,这使得内存的分配更加灵活和高效,程序在运行期间可以根据实际情况来合理地分配内存。但是,内存是有限的,因此 new 有可能由于内存不足而无法给一个对象分配内存。如果出现这种情况,就会发生运行时异常。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值