java-String类笔记

java-String类两种实例化方式以及其区别


前言:String是字符串类型,但是在Java中并没有定义这种数据类型。但它可以像基本数据类型一样使用。但是它本质还是创建一个对象。
一、实例化方式

1、直接实例化对象
	像基本数据类型一样也可以直接进行实例化。比如:String a = "abcd";
	
2、构造方法实例化对象
	String str = new String("abcd");

二、两种的区别

1、直接实例化
	创建了一个栈空间跟一个堆空间。但是直接实例化对象Java会将此字符串使用的匿名对象自动入池保存(字符串对象池),在下次在新创一个String类的对象入池保存且内容相同时会直接引用已有的内容,所以在这种情况下内容相同的情况下就只开创一个空间就是栈空间,栈空间保存的内容就是跟它内容相同的引用地址,这样就可以做到节省内存了。
	如:
	这个图片的第八行跟第十行是下面的构造方法实例化对象的实验


2、构造方法实例化对象
直接创建两个两个空间,而且不会自动入池保存。也就是说不管对象的内容跟对象池里面的没有一毛钱的关系。但是可以手动入池保存,String str = new String(“abcd”).intern();。
如:在这里插入图片描述
上面两张图“==”比较的是内容堆空间的地址。如果想要比较的是对象的内容那就用String提供的方法equals()。
如:
这个时候就不是比较堆内存的地址了,而是直接比较里面的内容。
在这里插入图片描述
新手发表,如果有大佬指点一下缺点我还是挺开心的。讲的不好也可以指出来评论一下,我改进。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值