详述如何创建String对象

一、双目运算符中的“==”

    1、栈与堆的存储形式

        一、栈中存储基础类型的变量和对象的地址:

        二、堆中存储对象的属性及方法:其中含有变量池

    2、“==”的作用范围

         一、“==”作用在栈里;等号两边出现两个变量时,比较的应该是存在栈里的值

         二、在使用基本数据类型比较时会直接比较值的相同,而使用对象变量比较时比较的是地址是否相同

二、String类型创建的对象

    1、在堆中常量池创建对象

	            	String str ="Tom";
	                String str2="Tom";
	                System.out.println(str==str2);

        使用String定义后直接赋值的方法,在常量池中创建的对象,当再次创建时会先常量池中进行一次搜索,若是已经存在,则直接将该地址赋值给新的变量;结果为:true

    2、在堆中创建对象

	
	                String str =new String("Tom");
	                String str2=new String("Tom");
	                System.out.println(str==str2);

        使用new String();创建对象的方法会在堆中常量池以外的区域创建一个新的对象,并将对象的地址赋值给栈中的变量;所以上述运行的结果为:false

    3、区别

        个人觉得两者的区别就在于变量池共享,此时存在两个变量地址相同的情况;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值