基于String变量的两种创建方式(详解)

发布时间 - 2026-01-11 02:15:23    点击率:

在java中,有两种创建String类型变量的方式:

String str01="abc";//第一种方式
String str02=new String("abc");//第二种方式

第一种方式创建String变量时,首先查找JVM方法区的字符串常量池是否存在存放"abc"的地址,如果存在,则将该变量指向这个地址,不存在,则在方法区创建一个存放字面值"abc"的地址。

第二种方式创建String变量时,在堆中创建一个存放"abc"的对象,使变量str02指向堆中的对象。

根据上面的创建方式,观察下面的示例:

String str01 = "abc";
String str02 = "abc";
String str03 = new String("abc");
String str04 = new String("abc");
System.out.println("str01==str02:" + (str01 == str02));
System.out.println("str03==str04:" + (str03 == str04));
System.out.println("str01==str03:" + (str01 == str03));

分析:

1、在创建str01时,方法区的字符串常量池中没有存储"abc"的地址,就在常量池中创建一个存放"abc"的地址,使变量str01指向该地址。创建str02时,字符串常量池已存在存放"abc"的地址,将str02变量指向该地址,此时str01与str02指向同一内存地址,所以"str01==str02"为true。

2、使用new关键字创建对象时,每一次都会在堆中创建一个新的对象,所以str03与str04指向对象的地址不同,"str03==str04"为false。

3、str01指向方法区,str03指向堆,所以"str01==str03"为false。

String对象被设计成不可改变的对象,即String对象所包含的字面值发生改变时,会开辟一个新的地址,创建一个新的对象,原地址不变。

String str01 = "abc";
String str02 = "abc";
str01="def";

在方法区的字符串常量池中建立一个新的存储"def"的地址,str01指向该地址,str02的指向不变。

以上这篇基于String变量的两种创建方式(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# String变量创建方式  # java中常用的字符串的比较方法(两种)  # 简单介绍JavaScript中字符串创建的基本方法  # Java String类的常用方法汇总  # 创建一个  # 池中  # 堆中  # 给大家  # 第二种  # 第一种  # 就在  # 两种  # 会在  # 希望能  # 不存在  # 这篇  # 有两种  # 建立一个  # 则在  # 小编  # 大家多多  # 是否存在  # 则将  # 所包含 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 香港服务器租用每月最低只需15元?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  如何在腾讯云免费申请建站?  Python自动化办公教程_ExcelWordPDF批量处理案例  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  高性能网站服务器配置指南:安全稳定与高效建站核心方案  EditPlus 正则表达式 实战(3)  如何在云服务器上快速搭建个人网站?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何在云主机上快速搭建多站点网站?  手机网站制作与建设方案,手机网站如何建设?  如何在IIS中新建站点并配置端口与物理路径?  网站制作软件有哪些,制图软件有哪些?  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  如何快速搭建高效可靠的建站解决方案?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  如何批量查询域名的建站时间记录?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  如何在香港免费服务器上快速搭建网站?  郑州企业网站制作公司,郑州招聘网站有哪些?  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  Laravel如何使用.env文件管理环境变量?(最佳实践)  Windows Hello人脸识别突然无法使用  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  JavaScript数据类型有哪些_如何准确判断一个变量的类型  如何快速搭建高效服务器建站系统?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Laravel如何使用模型观察者?(Observer代码示例)  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  javascript读取文本节点方法小结  利用vue写todolist单页应用  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  如何在万网ECS上快速搭建专属网站?  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  如何在阿里云通过域名搭建网站?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Laravel怎么上传文件_Laravel图片上传及存储配置  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Linux后台任务运行方法_nohup与&使用技巧【技巧】  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup