三张图彻底了解Java中字符串的不变性
该文章是图说Java系列文章中的一篇
定义一个字符串
String s = "abcd";
s中保存了string对象的引用。下面的箭头可以理解为“存储他的引用”。
使用变量来赋值变量
String s2 = s;
s2保存了相同的引用值,因为他们代表同一个对象。
字符串连接
s = s.concat("ef");
s中保存的是一个重新创建出来的string对象的引用。
总结
一旦一个string对象在内存(堆)中被创建出来,他就无法被修改。特别要注意的是,String类的所有方法都没有改变字符串本身的值,都是返回了一个新的对象。
如果你需要一个可修改的字符串,应该使用StringBuffer 或者 StringBuilder。否则会有大量时间浪费在垃圾回收上,因为每次试图修改都有新的string对象被创建出来。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Java中JSON字符串与java对象的互换实例详解
在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好,下面先看下JSON的格式, JSON可以有两种格式,一种是对象格式的,另一种是数组对象, {"name":"JSON","address":"北京市西城区","age":25}//JSON的对象格式的字符串 [
-
Java中char数组(字符数组)与字符串String类型的转换方法
本文实例讲述了Java中char数组(字符数组)与字符串String类型的转换方法.分享给大家供大家参考,具体如下: 在Java语言编程时,使用"口令字段"jPasswordField组件时,如果要获得密码值,就需要使用该组件的getPassword()方法.jPasswordField的getPassword()方法返回一个char类型的数组,我们经常需要将这个数组转换为String类型,以便进行诸如口令匹配或口令赋值等操作.这时,就需要将char类型的数组进行转换.当然也经常会遇到
-
Java生成MD5加密字符串代码实例
(1)一般使用的数据库中都会保存用户名和密码,其中密码不使用明码保存. 有时候用MD5密码,很多语言都提供了将字符串生成为MD5密码的方法或函数.MD5的加密算法是公开的. 有时候也可以用自己的字符串加密算法,这种加密算法是只有自己知道的. (2)破解MD5的过程就是先算好大量或者所有可能的字符串的MD5数值,之后进行查询就可以破解.虽然有些网站规定了密码的位数在6~20位之间,但是要事先计算这么多是字符串并有效的组织存储.查询还是相当麻烦,相当慢的. 因为MD5的位数是固定的,
-
Java正则多字符串匹配替换
Java中使用也比较简单:1. 编译正则表达式的字面值得到对应的模式Pattern对象: 2. 创建匹配给定输入与此模式的匹配器Matcher: 3. 通过匹配器对象执行操作,匹配器对象的方法很丰富,方法之间组合使用更加强大. 复制代码 代码如下: public static void main(String[] args) { //被替换关键字的的数据源 Map<String,String> tokens = new HashMap<String,String>(
-
Java String字符串和Unicode字符相互转换代码
java环境安装后jdk的bin目录有个native2ascii.exe可以实现类似的功能,但是通过java代码也可以实现同样的功能. 字符串转换unicode java方法代码片段: 复制代码 代码如下: /** * 字符串转换unicode */ public static String string2Unicode(String string) { StringBuffer unicode = new StringBuffer(); for (int i = 0
-
Java生成和解析XML格式文件和字符串的实例代码
1.基础知识: Java解析XML一般有四种方法:DOM.SAX.JDOM.DOM4J. 2.使用介绍 1).DOM (1)简介 由W3C(org.w3c.dom)提供的接口,它将整个XML文档读入内存,构建一个DOM树来对各个节点(Node)进行操作.优点就是整个文档都一直在内存中,我们可以随时访问任何节点,并且对树的遍历也是比较熟悉的操作:缺点则是耗内存,并且必须等到所有的文档都读入内存才能进行处理. (2)示例代码: 复制代码 代码如下: <?xml version="1.0&quo
-
JAVA中字符串函数subString的用法小结
String str;str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str: str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex结束时的字符串,并将其赋值给str; demo: 复制代码 代码如下: class Test { public static void main(String[] args)
-
java的io操作(将字符串写入到txt文件中)
复制代码 代码如下: import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.PrintStream;import java.io.PrintWriter;import java.io.RandomAccessFile; public cla
-
Java中去除字符串中所有空格的几种方法
JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 复制代码 代码如下: String str = " hell o "; String str2 = str.replaceAll(" ", ""); System.out.println(str2); 3.或者replaceAll("
-
Java 替换字符串中的回车换行符的方法
使用正则表达式进行替换: 代码片段: String documentTxt = EntityUtils.toString(entity,"gbk");//获取数据 documentTxt=documentTxt.replaceAll("[\\t\\n\\r]", "");//将内容区域的回车换行去除 说明:String类的replaceAll就有正则替换功能. \t为制表符 \n为换行 \r为回车 java正则使用: 示例方法: 复制代码 代码如
随机推荐
- Windows Server 2016 MySQL数据库安装配置详细安装教程
- 详解Vue.js基于$.ajax获取数据并与组件的data绑定
- Node.js学习之TCP/IP数据通讯(实例讲解)
- iOS DropDown下拉按钮效果代码分享
- python正则分组的应用
- 谈谈第三方App接入微信登录 解读
- THINKPHP项目开发中的日志记录实例分析
- PHP与Java对比学习日期时间函数
- Django的数据模型访问多对多键值的方法
- MySQL中字符串函数详细介绍
- jQuery中:selected选择器用法实例
- 微信小程序中实现一对多发消息详解及实例代码
- JSON for java快速入门总结学习
- JNDI在JavaEE中的角色_动力节点Java学院整理
- C# yield关键字详解
- 解析美国东部时间与北京时间相互转换的实现代码
- Android流式布局实现历史搜索记录功能
- Android启动页广告(腾讯广告联盟)解决方法及源码下载
- ubuntu用 vmware 安装win10系统的教程(分享)
- 美团DB数据同步到数据仓库的架构与实践