首页 > 其他分享 >字符串内容不可变

字符串内容不可变

时间:2022-10-29 10:44:44浏览次数:64  
标签:必将会 常量 不可 内容 字符串 massage String

字符串常量池指的是当定义一个字符串会将该字符串的对象放入字符串常量池,当再次定义的字符串的内容与之前定义的内容相同时,则不需要再开辟新的堆内存空间,直接将引用指向常量池里面的对象即可

如果字符串内容可变的话,这样的字符串常量池的设计显然就没有意义了,还带来了很多安全隐患
字符串可变的隐患和设置不可变原因详解

 //字符串内容不可变内存分析
 public class StringChage{
	 public static void  main(String[]args){
		 String massage="www.";
		 massage=massage+"yoock";
		 massage=massage+".com";
		 System.out.println(massage);
	 }
 }



运行结果:

此过程内存结构分析:

可以发现String对象内容的改变实际上时通过内存地址的“断开-连接”变化完成的 ,而本身字符串中的内容并没有发生任何变化

此过程的问题

在今后的开发中需要牢记字符串内容不可变这一重要特性,如果需要大量修改字符串的内容,必将会大量进行内存的“断开-链接”操作,这样做必将会产生大量的垃圾空间,这也必将会极大的影响程序的性能,如果真的需要修改可以是因StringBuffer来来完成

标签:必将会,常量,不可,内容,字符串,massage,String
From: https://www.cnblogs.com/swtaa/p/16835765.html

相关文章

  • linux 中如何在指定行后面插入内容
     001、[root@pc1test]#lsa.txt[root@pc1test]#cata.txt##测试数据123456[root@pc1test]#sed'3axx'a.txt##在第3行后面......
  • 每日算法4:计算字符串中的字节数;正则匹配
    匹配输入的字符:以字母或_开头,后面由数字字母_组成长度为5-20的字符串varreg=/^[a-bA-B_][a-bA-B0-9_]{4,19}/varname1='abb'console.log(reg.test(name1)......
  • 【基础知识】为python部署第三方库(设备不可联网版)
    “大家好哇!继上次我们说完怎么安装python之后,这一次给大家分享一下怎么根据自己的需求来部署所需要的库,如numpy库等。”01安装第三方库我们在前面已经说过了当设备可以......
  • 使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容
    废话不多说直接上代码:不清楚的加群:群:191065815privatevoidForm1_Load(objectsender,EventArgse){try{//更改设置......
  • 2022-10-28学习内容
    1.SharedPreferences用法1.1activity_share_write.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/and......
  • 为什么都说Go字符串类型不能修改
    在接触Go这么语言,可能你经常会听到这样一句话。对于字符串不能修改,可能你很纳闷,日常开发中我们对字符串进行修改也是很正常的,为什么又说Go中的字符串不能进行修改呢?本文就......
  • JavaScript--字符串
    一、字符串的概述1、String(字符串)数据类型表示零或多个16位Unicode字符序列。字符串可以使用双引号(")、单引号(')或反引号(`)标示。2、ECMAScript中的字符串是不可变的(im......
  • 内容懒加载
    title:内容懒加载的方式(交叉器,滚动scroll)这里我们先回忆一下盒子顶部与父盒子高度知识这里还存在一个window属性也能起到相关作用,那就是window.pageYoffset,含义是指......
  • 未安装c的visualstudio语言支持。代码编辑IntelliSense将不可用
    错误如下:未安装c的visualstudio语言支持。代码编辑IntelliSense将不可用。服务器空间的标记IntelliSense可能不起作用 运行VisualStudio2008的时候弹出一个如题的......
  • CODESYS SP18 中需要注意的一些新内容
    1不能再切换到旧的编译器版本这是通过改进代号CDS-74626完成的ReleaseNote:[[GENERAL]]Thechoiceofthecompilerversionislimitedtoonlythenewestvers......