字符串—StringBuilder
目录
2.StringBuilder
2.1StringBuilder在内存中的执行流程
2.2StringBuilder概述
2.3StringBiilder构造方法
2.4StringBuilde的添加和反转方法
2.5StringBuilder和String相互转
2.StringBuilder
(学完StringBuilder之后要求能够知道String和StringBuilder的区别以及能够使用StringBuilder完成需求)
2.1StringBuilder在内存中的执行流程
为了讲明白StringBuilder我们先来看一下字符串的操作
这里由一串代码,在main方法中String s =“hello”;
s += “world”;
并输出了s的值,那s的值应该是多少呢?
首先main方法会进入到栈内存中,String s会进入到main方法里面,而hello是一个常量,就会在堆内存中的常量池里出现它有个地址001,把001赋值给s
那么这个s就通过001指向了堆内存常量池里的001对应的数据内容
然后s += “world”;就相当于s = s + “world”;
这里又出现了一个world这样的一个常量,然后就会到堆内存中的常量池去找“world”结果没有“world”这个字符串常量,他就会在常量池添加一个常量对象002,它的内容是“world”,
然后就是s + “world”,s它是001,它的内容是“hello”,“hello”加上“world”内容是“helloworld”这个常量对象,所有在这里也会出现“helloworld”这样一个创建对象,它的地址是003,最后把这个003赋值给这个s,然后这个s就通过003指向了常量池的003对应的“helloworld”,
最后输出这个s的时候就是输出的003里面对应的内容:“helloworld”
最后在堆内存里面我们终使用的s其实是003里面的内容,001和002的内容就浪费掉了。
所以重点要说(下图):
2.2StringBuilder概述
StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器。这里的可变指的是StringBuilder对象中的内容是可变的。(就是说他在做拼接的时候是不会创建一个对象的)
String和StringBuilder的区别:
String:内容是不可变的
StringBuilder:内容是可变的
2.3StringBiilder构造方法
先到帮助文档查看StringBilder构造方法
了解之后,到代码中演示:
/*StringBuilder构造方法:public StringBuilder();创建一个空白可变字符串对象,不含有任何内容public StringBuilder(String str);根据字符串的内容,来创建可变字符串对象*/
public class StringBuiDemo {public static void main(String[] args) {//public StringBuilder();创建一个空白可变字符串对象,不含有任何内容StringBuilder sb = new StringBuilder();//这里在控制台输出了sb: 没有其他任何内容,因为我们创建的是空白可变字符串对象,没有任何内容System.out.println("sb:" + sb);//我们来使用这个方法System.out.println("sb.length():" + sb.length());//它的长度是0//public StringBuilder(String str);根据字符串的内容,来创建可变字符串对象StringBuilder sb2 = new StringBuilder("hello");System.out.println("sb2“" + sb2);//输出了 hello//我们来使用这个方法System.out.println("sb2.length():" + sb2.length());//它的长度是5}
}
2.4StringBuilde的添加和反转方法
代码演示:
/*String Builder的添加和反转方法public StringBuilder append(任意类型):添加数据,并返回对象本身public StringBuilder reverse():返回相反的字符序列*/
public class StringBuilder_FZ_Demo {public static void main(String[] args) {//要调方法首先得有对象StringBuilder sb = new StringBuilder();//有了对象之后调方法:public StringBuilder append(任意类型):添加数据,并返回对象本身//StringBuilder sb2 = sb.append("hello");//System.out.println("sb:" + sb);//2.但是为什么这里也是hello呢?//System.out.println("sb2:" + sb2);//1.这里肯定是hello//3.看下列解释//System.out.println(sb == sb2);//返回的是true,说明sb和sb2是同一个对象//4.它添加数据,并返回对象本身也就是说明返回的是自己,也就是说我们不需要一个StringBuilder来接收了//5.可以直接写:对象.append(); 因为返回的是对象本身,因为对象本身也是个对象,是对象就可以调用方法//sb.append("hello");//sb.append("world");//sb.append("java");//sb.append(100);//System.out.println("sb:" + sb);// sb:helloworldjava100//System.out.println("================");//6.上面5.那样写也是没有问题的,当然也可以改进一下,采用链式编程:sb.append("hello").append("world").append("java").append(100);System.out.println("sb:" + sb);//也会得到sb:helloworldjava100//7.public StringBuilder reverse():返回相反的字符序列。反转方法演示:sb.reverse();//reverse直接实现了把sb的内容反转System.out.println("sb:" + sb);//会得到 001avajdlrowolleh}
}
2.5StringBuilder和String相互转
(为什么要学习StringBuilder和String相互转换因为StringBuilder中有两个比较好用的方法一个是append,一个是reverse,如果String想使用这两个方法是使用不了的,所以得先想办法把String转换为StringBuilder,最后还得把StringBuilder转回String,所以要学习它们的相互转换)
- StringBuilder转换为String
public String toString():通过toString()就可以实现把StringBuilder转换为String。
- String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder。
代码演示:
/*1. StringBuilder转换为Stringpublic String toString():通过toString()就可以实现把StringBuilder转换为String。2. String转换为StringBuilderpublic StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder。*/
public class StringZHDemo {public static void main(String[] args) {//StringBuilder转换为StringStringBuilder sb = new StringBuilder();sb.append("hello");//String s = sb;这样直接转换是不可以的//public String toString():通过toString()就可以实现把StringBuilder转换为String。String s = sb.toString();System.out.println("s:" + s);//String转换为StringBuilderString s1 = "world";//StringBuilder sb1 = s1;这样写也是错误的//public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilderStringBuilder sb1 = new StringBuilder(s1);System.out.println("s1:" + s1);}
}
字符串—StringBuilder相关推荐
- 【Java 基础】字符串StringBuilder、StringBuffer,工具StringJoiner
字符串StringBuilder.StringBuffer,工具StringJoiner 一.概述 二.StringBuilder 三.StringBuffer 三.StringBuilder .St ...
- Java for循环遍历一个list_for循环遍历list集合组拼成字符串StringBuilder,及处理最后一个逗号...
方法一:拼接过程中自动处理逗号 public static void main(String[] args) { StringBuilder str=new StringBuilder(); ...
- 将数据转化成字符串时:用字符串的链接 还是 StringBuilder
/*目的:将数据转化成字符串时:用字符串的链接 还是 StringBuilder呢? */ public class Test{public static void main(String[] arg ...
- 一篇与众不同的 String、StringBuilder 和 StringBuffer 详解
1 碎碎念 这是一道老生常谈的问题了,字符串是不仅是 Java 中非常重要的一个对象,它在其他语言中也存在.比如 C++.Visual Basic.C# 等.字符串使用 String 来表示,字符串 ...
- 写一个函数,要求输入一个字符串和一个字符长度,根据字符长度对该字符串进行分隔
看代码 @Testpublic void Test4() {String str = "hello world";// 2个字符分割String[] split = split(s ...
- JAVA SE学习day_02:StringBuilder、正则表达式、Object
一.StringBuilder 1.1 java.lang.StringBuilder 由于字符串的特性决定他不适合做修改操纵,为了解决这个问题Java提供了便于修改字符串的API:StringBui ...
- 字符串问题简述与两个基本问题的Java实现——判断二叉树拓扑结构关系与变形词...
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6851631.html (解题金句:其他问题字符串化,然后调用String类封装方法解决问题: 字符串问题数组 ...
- 《Java从小白到大牛》之第9章 字符串
<Java从小白到大牛>纸质版已经上架了!!! 由字符组成的一串字符序列,称为"字符串",在前面的章节中也多次用到了字符串,本章将重点介绍. Java中的字符串 Jav ...
- 第3章 StringBuilder类
1.1 StringBuilder类概述 StringBuilder:是一个可变的字符串.字符串缓冲区类. String和StringBuilder的区别: String的内容是固定的 StringB ...
最新文章
- JS学习笔记 - 代码复用
- 十三、limit 的使用
- mysql删除重复文章标题_MySQL中查询、删除重复记录的方法大全
- 不调用python函数实现直方图均衡化_直方图均衡化(HE)
- fatal error: hdf5.h: No such file or directory
- [轉載]用PHP的ob_start();控制您的浏览器cache!
- Long类型参数传到前端精度丢失的解决方案
- Windows Mobile 获取来电号码和屏蔽来电
- Android OTA相关博文
- Javascript:面向对象举例——矩形类及其实例化
- 屏幕录像专家 V2013 + 注册机(屏幕录像)
- java开发app_使用java制作app教程
- Brew doctor warns about “Warning: A newer Command Line Tools release is available”
- Gartner研究:在中国,混合云的采用已成为主流趋势
- 想要刚毕业就月入过万必须要懂这些面试题(Vue 篇)
- 使用枚举实现编译时可变长数组
- 珍惜在天堂和地狱溜达的每一天
- java clip_java – 使用Clip对象播放多个声音片段
- oracle.net.ns.NetException:Socket read timed out update
- Follow me 总结
热门文章
- 【Python】输入输出(11)
- java大学教程_JAVA大学实用教程 第4版 PDF 下载
- 【汇智学堂】-python小游戏(生成.exe文件)
- 金仓数据库 KingbaseES SQL 语言参考手册 (7. 条件表达式)
- Discuz新秀网络验证管理系统- 火山PC - ver 1.0 - 软件开发框架
- 传输线理论基础01——相关定义、信号速率、分布参数与电报方程
- 如果计算机正执行屏幕保护程序 当用户,计算机一级考试参考试题(含答案)章节一.doc...
- Authorware常见问题的解决
- JavaScript 操作JSON对象查找、删除、修改
- 数控机床传动装置机械及PLC电气控制系统设计