java基础---------字符串常量池-创建了几个对象

本文详细解释了Java中字符串常量池的概念及其工作原理。包括如何通过直接赋值和new关键字创建字符串对象,并探讨了这两种方式下对象的内存分配情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常量池:

java设计人员为了高效的使用内存,有了字符串常量池的概念.相同的字面值对象只在字符串常量池中创建一次就可以了,

当再出现相同的字面值对象时,不会创建新的对象,只是引用常量池中已经创建好的对象即可.

 

无则创建,有则返回

JVM虚拟机运行时,人为划分的内存分类

 

:方法调用的入栈、方法执行完毕出栈,方法中的局部变量都在每个方法对应的栈帧中分配.

: 程序运行时动态分配的内存,new创建的对象就在堆里。

方法区(静态区):常量池在方法区里面

 

创建了几个对象

1.直接赋值


只会创建一个对象,在常量池中,无则创建,有则返回

String s1 = "aaa";//创建了一个对象 在常量池中

String s2 = "aaa";//没有创建对象

System.out.println(s1==s2);//true

System.out.println(s1.equals(s2));//true

 

2.new


new创建了两个对象:1.常量池中(无则创建、有则返回) 2.堆里(只要一new就一定会在堆里出现一个新的)

String s1 = new String("aaa");//创建了两个对象 常量池中是字面值对象   堆里是指向常量池中的地址

String s2 = new String("aaa");创建了一个对象 堆里那个

System.out.println(s1==s2);//false 不是引用同一个对象

System.out.println(s1.equals(s2));//true

System.out.println(s1.intern()==s2.intern());//true



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值