Java String 和 new String()的比较与区别

发布时间 - 2026-01-11 00:45:29    点击率:

Java String 和 new String()的区别

栈区存引用和基本类型,不能存对象,而堆区存对象。==是比较地址,equals()比较对象内容。

String str1 = "abcd"的实现过程:首先栈区创建str引用,然后在String池(独立于栈和堆而存在,存储不可变量)中寻找其指向的内容为"abcd"的对象,如果String池中没有,则创建一个,然后str指向String池中的对象,如果有,则直接将str1指向"abcd"";如果后来又定义了字符串变量 str2 = "abcd",则直接将str2引用指向String池中已经存在的“abcd”,不再重新创建对象;当str1进行了赋值(str1=“abc”),则str1将不再指向"abcd",而是重新指String池中的"abc",此时如果定义String str3 = "abc",进行str1 == str3操作,返回值为true,因为他们的值一样,地址一样,但是如果内容为"abc"的str1进行了字符串的+连接str1 = str1+"d";此时str1指向的是在堆中新建的内容为"abcd"的对象,即此时进行str1==str2,返回值false,因为地址不一样。

String str3 = new String("abcd")的实现过程:直接在堆中创建对象。如果后来又有String str4 = new String("abcd"),str4不会指向之前的对象,而是重新创建一个对象并指向它,所以如果此时进行str3==str4返回值是false,因为两个对象的地址不一样,如果是str3.equals(str4),返回true,因为内容相同。

不多说,直接上代码:

String str1 = "abcd";
String str2 = "abcd";
String str3 = new String("abcd");
String str4 = new String("abcd");
System.out.println(str1==str2);//true地址一样
System.out.println(str3==str4);//false,但地址不一样
System.out.println(str3.equals(str3));//true,值一样
System.out.println(str2.equals(str3));//true,值一样
System.out.println((str1+"a")==(str2+"a"));//false;进行了+连接地址不一样

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # String  #   # new  # String()区别  # String()详解  # String()对比  # java中的 toString()方法实例代码  # 详解Java String类常用方法有哪些  # java 取交集方法retainAll的实现  # java如何用递归方法求阶乘  # 深入解析Java中反射中的invoke()方法  # 深入理解Java new String()方法  # 池中  # 进行了  # 返回值  # 堆中  # 他们的  # 是在  # 又有  # 希望能  # 谢谢大家  # 多说  # 创建一个  # 值为  # br  # abcd  # println  # str  # equals  # strong 


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


相关推荐: Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  Laravel中的Facade(门面)到底是什么原理  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  如何在IIS服务器上快速部署高效网站?  Laravel Fortify是什么,和Jetstream有什么关系  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  Laravel如何处理表单验证?(Requests代码示例)  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  如何利用DOS批处理实现定时关机操作详解  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  教学论文网站制作软件有哪些,写论文用什么软件 ?  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  如何用低价快速搭建高质量网站?  Laravel如何实现数据库事务?(DB Facade示例)  高防服务器租用首荐平台,企业级优惠套餐快速部署  动图在线制作网站有哪些,滑动动图图集怎么做?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  JS弹性运动实现方法分析  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  高防服务器租用如何选择配置与防御等级?  js代码实现下拉菜单【推荐】  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  Laravel如何实现本地化和多语言支持?(i18n教程)  微信小程序 五星评分(包括半颗星评分)实例代码  如何快速搭建高效WAP手机网站吸引移动用户?  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  如何快速生成专业多端适配建站电话?  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  浅析上传头像示例及其注意事项  如何在IIS中新建站点并配置端口与IP地址?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  javascript中对象的定义、使用以及对象和原型链操作小结  Android仿QQ列表左滑删除操作  Laravel怎么实现模型属性的自动加密  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  深圳网站制作的公司有哪些,dido官方网站?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  如何快速搭建个人网站并优化SEO?  长沙企业网站制作哪家好,长沙水业集团官方网站?  Laravel中的withCount方法怎么高效统计关联模型数量  Laravel怎么为数据库表字段添加索引以优化查询  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Linux后台任务运行方法_nohup与&使用技巧【技巧】