详述如何创建String对象

关系运算符==

在介绍String之前,我们先来对关系运算符==进行一些探讨。

int a=12;
int b=12;
system.out.println(a==b);

最后输出的结果是ture。

如果是在基本数据类型之中,变量与值同在栈中,比较的是值是否相等。

        Object object1=new Object();
		Object object2=new Object();
        System.out.println(object1==object2);

输出的结果是false。

原因:是引用类型的话,变量中存的是对象的地址,所以==比较的是地址是否相等。

如下图所示——对象的名称是naddre,地址是ox220,保存的值在栈中,是“河南郑州高新区”。

 

 String对象

String类是引用数据类型,该类实例化方式有两种:

直接赋值,其语法格式如下:

构造方法实现其实例化,其语法格式如下:

.

两种方式区别

String类实例化的两种方式是有区别的:

直接赋值,对象存入常量池中;当JVM创建字符串对象前会先去常量池中找有没有一个字符串内容与当前字符串相同,有:将已有的地址赋值给变量;无,创建新的对象。
 

执行“String str1 = ”abc“;”后,JVM在常量池中开辟空间存放一个abc字符串空间并让str1指向该对象;

这种方式会出现常量池数据共享的现象:

        1、执行“String str1 = ”abc“;”后,JVM在常量池中开辟空间存放一个abc字符串空间并让str1指向该对象;

        2、执行“String str2 = ”abc“;”时,JVM会先检查常量池中是否已经存在了一个内容为abc的空间,如果存在就直接让str2指向该空间,否则就会在开辟一个新的空间存放该字符串;

        3、执行“String str3 = ”def“;”时,JVM会先检查常量池中是否已经存在了一个内容为def的空间,由于不存在,所以JVM在常量池中新开辟一个空间存放def并让str3指向该空间;

 

实例化:直接存入堆内存;每new一次就会创建一个新的对象。

       1、执行“String str1 = ”abc“;”后,JVM在常量池中开辟空间存放一个abc字符串空间并让str1指向该对象;

       2、执行“String str2 = ”abc“;”时,JVM会先检查常量池中是否已经存在了一内容为abc的空间,如果存在就直接让str2指向该空间,否则就会在开辟一个新的空间存放该字符串,上面的代码等同于下面代码:

 

 

构造方法实现其实例化,这种方式每new一次就会创建新的对象:

        1、执行“String str = ”abc“;”后,JVM在常量池中开辟存放abc的空间并让str指向该空间;

        2、执行“String str1 = new String(str);”时,JVM直接创建一个新的对象并让str1指向该对象;

        3、执行“String str2 = new String(str);”时,JVM再次创建一个新的对象并让str2指向该对象;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
string(字符串)是Redis中最简单且使用最广泛的数据结构之一。它的内部结构是一个字符数组,存储了一串连续的字符。 这个字符数组可以包含任意的字符,包括字母、数字、特殊字符等。每个字符都占据一个固定大小的内存空间,并使用索引来访问和操作这些字符。 在Redis中,可以通过指定位置和数量来截取和操作字符串,创建一个新的字符串变量。例如,通过使用string str(字符串s,位置p,数量n)这样的语法来截取字符串s中从位置p开始的n个字符并将其赋值给str变量。 这样的操作可以用于对字符串进行切片、拼接、替换等各种操作。总之,字符串的内部结构是一个字符数组,通过索引来访问和操作其中的字符,可以进行各种字符串相关的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Redis精通系列(一)——String 字符串详述](https://blog.csdn.net/weixin_45839894/article/details/120433513)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [string类的解析【超详细】](https://blog.csdn.net/phantomthief1412/article/details/122246951)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值