三张图彻底了解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生成和解析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的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中char数组(字符数组)与字符串String类型的转换方法
本文实例讲述了Java中char数组(字符数组)与字符串String类型的转换方法.分享给大家供大家参考,具体如下: 在Java语言编程时,使用"口令字段"jPasswordField组件时,如果要获得密码值,就需要使用该组件的getPassword()方法.jPasswordField的getPassword()方法返回一个char类型的数组,我们经常需要将这个数组转换为String类型,以便进行诸如口令匹配或口令赋值等操作.这时,就需要将char类型的数组进行转换.当然也经常会遇到
-
Java正则多字符串匹配替换
Java中使用也比较简单:1. 编译正则表达式的字面值得到对应的模式Pattern对象: 2. 创建匹配给定输入与此模式的匹配器Matcher: 3. 通过匹配器对象执行操作,匹配器对象的方法很丰富,方法之间组合使用更加强大. 复制代码 代码如下: public static void main(String[] args) { //被替换关键字的的数据源 Map<String,String> tokens = new HashMap<String,String>(
-
Java生成MD5加密字符串代码实例
(1)一般使用的数据库中都会保存用户名和密码,其中密码不使用明码保存. 有时候用MD5密码,很多语言都提供了将字符串生成为MD5密码的方法或函数.MD5的加密算法是公开的. 有时候也可以用自己的字符串加密算法,这种加密算法是只有自己知道的. (2)破解MD5的过程就是先算好大量或者所有可能的字符串的MD5数值,之后进行查询就可以破解.虽然有些网站规定了密码的位数在6~20位之间,但是要事先计算这么多是字符串并有效的组织存储.查询还是相当麻烦,相当慢的. 因为MD5的位数是固定的,
-
Java中去除字符串中所有空格的几种方法
JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 复制代码 代码如下: String str = " hell o "; String str2 = str.replaceAll(" ", ""); System.out.println(str2); 3.或者replaceAll("
-
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 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 替换字符串中的回车换行符的方法
使用正则表达式进行替换: 代码片段: String documentTxt = EntityUtils.toString(entity,"gbk");//获取数据 documentTxt=documentTxt.replaceAll("[\\t\\n\\r]", "");//将内容区域的回车换行去除 说明:String类的replaceAll就有正则替换功能. \t为制表符 \n为换行 \r为回车 java正则使用: 示例方法: 复制代码 代码如
随机推荐
- JavaScript 对象链式操作测试代码
- tomcat环境变量详细配置步骤
- iOS功能实现之列表的横向刷新加载
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- .Net中的json操作类用法分析
- javascript 处理HTML元素必须避免使用的一种方法
- 动态刷新 dorado树的js代码
- PHP编写daemon process 实例详解
- asp万用分页程序代码
- Javascript 学习笔记之 对象篇(二) : 原型对象
- jQuery实现仿美橙互联两级导航菜单效果完整实例
- 如何监测和优化OLAP数据库
- oracle获取当前时间,精确到毫秒并指定精确位数的实现方法
- jQuery实现图片预加载效果
- jquery 获取json数据实现代码
- jQuery实现的简单拖拽功能示例
- 详解js前端代码异常监控
- 不用确认即可打印的javascript代码
- Apache服务器关闭TRACE Method请求方式的方法
- java application maven项目打自定义zip包实例(推荐)