当前位置: 首页 > news >正文

一段代码搞懂String被final修饰的影响

首先,介绍一下

String、StringBuffer、StringBuilder的区别

String是final修饰的,不可变,每次操作都会产生新的String对象

StringBuffer和StringBuilder都是在原对象上操作

public class StringAndBuilderDemo {public static void main(String[] args) {StringDemo();System.out.println("************************");StringBuilderDemo();}public static void StringDemo(){String original = "hello"; // 创建一个 String 对象 "hello"System.out.println("Original: " + original);// 保存原始对象的引用String previous = original;// 修改字符串original = original.concat(" world"); // 创建一个新的 String 对象System.out.println("Modified: " + original); // 输出 "hello world"// 访问之前的对象引用System.out.println("Previous: " + previous); // 输出 "hello"}public static void StringBuilderDemo(){StringBuilder original = new StringBuilder("hello"); // 创建一个 StringBuilder 对象 "hello"System.out.println("Original: " + original);// 保存原始对象的引用StringBuilder previousBuilder;previousBuilder = original;// 修改字符串original.append(" world"); // 在原有对象上修改System.out.println("Modified: " + original); // 输出 "hello world"// 访问之前的对象引用System.out.println("Previous: " + previousBuilder); // 输出 "hello world"}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【UI】element ui table(表格)expand实现点击一行展开功能
  • 【Moveit2官方教程】使用 MoveIt Task Constructor (MTC) 框架来定义和执行一个机器人任务
  • Windows下SDL2创建最简单的一个窗口
  • laravel 11 区分多模块的token
  • Debian项目实战——环境搭建篇
  • 如何查看macos是x86还是arm
  • Android perfetto 简介
  • 容联云容犀Copilot&Agent入选《中国 AI Agent 产品罗盘》
  • 【鸿蒙】HarmonyOS NEXT星河入门到实战1-开发环境准备
  • C++中的for-each循环
  • 设计模式】Listener模式和Visitor模式的区别
  • Android 设计模式
  • python画图|3D垂线标记
  • HT5169 内置BOOST升压的11WI2S输入D类音频功放
  • wangeditor——cdn引入的形式创建一个简易版编辑器——js技能提升
  • [译]前端离线指南(上)
  • ECMAScript6(0):ES6简明参考手册
  • HTML-表单
  • isset在php5.6-和php7.0+的一些差异
  • Java小白进阶笔记(3)-初级面向对象
  • js正则,这点儿就够用了
  • October CMS - 快速入门 9 Images And Galleries
  • QQ浏览器x5内核的兼容性问题
  • 创建一个Struts2项目maven 方式
  • 从0到1:PostCSS 插件开发最佳实践
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 回顾2016
  • 前端代码风格自动化系列(二)之Commitlint
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 山寨一个 Promise
  • 算法---两个栈实现一个队列
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 我感觉这是史上最牛的防sql注入方法类
  • 原生 js 实现移动端 Touch 滑动反弹
  • 最近的计划
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #if等命令的学习
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (12)目标检测_SSD基于pytorch搭建代码
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (一)Java算法:二分查找
  • .bat批处理(一):@echo off
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET单元测试
  • .NET的微型Web框架 Nancy
  • @Autowired和@Resource的区别
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • []指针
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [Android] Implementation vs API dependency