目录

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,所以要学习它们的相互转换)

  1. StringBuilder转换为String

public String toString():通过toString()就可以实现把StringBuilder转换为String。

  1. 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相关推荐

  1. 【Java 基础】字符串StringBuilder、StringBuffer,工具StringJoiner

    字符串StringBuilder.StringBuffer,工具StringJoiner 一.概述 二.StringBuilder 三.StringBuffer 三.StringBuilder .St ...

  2. Java for循环遍历一个list_for循环遍历list集合组拼成字符串StringBuilder,及处理最后一个逗号...

    方法一:拼接过程中自动处理逗号     public static void main(String[] args) { StringBuilder str=new StringBuilder(); ...

  3. 将数据转化成字符串时:用字符串的链接 还是 StringBuilder

    /*目的:将数据转化成字符串时:用字符串的链接 还是 StringBuilder呢? */ public class Test{public static void main(String[] arg ...

  4. 一篇与众不同的 String、StringBuilder 和 StringBuffer 详解

    1 碎碎念  这是一道老生常谈的问题了,字符串是不仅是 Java 中非常重要的一个对象,它在其他语言中也存在.比如 C++.Visual Basic.C# 等.字符串使用 String 来表示,字符串 ...

  5. 写一个函数,要求输入一个字符串和一个字符长度,根据字符长度对该字符串进行分隔

    看代码 @Testpublic void Test4() {String str = "hello world";// 2个字符分割String[] split = split(s ...

  6. JAVA SE学习day_02:StringBuilder、正则表达式、Object

    一.StringBuilder 1.1 java.lang.StringBuilder 由于字符串的特性决定他不适合做修改操纵,为了解决这个问题Java提供了便于修改字符串的API:StringBui ...

  7. 字符串问题简述与两个基本问题的Java实现——判断二叉树拓扑结构关系与变形词...

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6851631.html  (解题金句:其他问题字符串化,然后调用String类封装方法解决问题: 字符串问题数组 ...

  8. 《Java从小白到大牛》之第9章 字符串

    <Java从小白到大牛>纸质版已经上架了!!! 由字符组成的一串字符序列,称为"字符串",在前面的章节中也多次用到了字符串,本章将重点介绍. Java中的字符串 Jav ...

  9. 第3章 StringBuilder类

    1.1 StringBuilder类概述 StringBuilder:是一个可变的字符串.字符串缓冲区类. String和StringBuilder的区别: String的内容是固定的 StringB ...

最新文章

  1. JS学习笔记 - 代码复用
  2. 十三、limit 的使用
  3. mysql删除重复文章标题_MySQL中查询、删除重复记录的方法大全
  4. 不调用python函数实现直方图均衡化_直方图均衡化(HE)
  5. fatal error: hdf5.h: No such file or directory
  6. [轉載]用PHP的ob_start();控制您的浏览器cache!
  7. Long类型参数传到前端精度丢失的解决方案
  8. Windows Mobile 获取来电号码和屏蔽来电
  9. Android OTA相关博文
  10. Javascript:面向对象举例——矩形类及其实例化
  11. 屏幕录像专家 V2013 + 注册机(屏幕录像)
  12. java开发app_使用java制作app教程
  13. Brew doctor warns about “Warning: A newer Command Line Tools release is available”
  14. Gartner研究:在中国,混合云的采用已成为主流趋势
  15. 想要刚毕业就月入过万必须要懂这些面试题(Vue 篇)
  16. 使用枚举实现编译时可变长数组
  17. 珍惜在天堂和地狱溜达的每一天
  18. java clip_java – 使用Clip对象播放多个声音片段
  19. oracle.net.ns.NetException:Socket read timed out update
  20. Follow me 总结

热门文章

  1. 【Python】输入输出(11)
  2. java大学教程_JAVA大学实用教程 第4版 PDF 下载
  3. 【汇智学堂】-python小游戏(生成.exe文件)
  4. 金仓数据库 KingbaseES SQL 语言参考手册 (7. 条件表达式)
  5. Discuz新秀网络验证管理系统- 火山PC - ver 1.0 - 软件开发框架
  6. 传输线理论基础01——相关定义、信号速率、分布参数与电报方程
  7. 如果计算机正执行屏幕保护程序 当用户,计算机一级考试参考试题(含答案)章节一.doc...
  8. Authorware常见问题的解决
  9. JavaScript 操作JSON对象查找、删除、修改
  10. 数控机床传动装置机械及PLC电气控制系统设计