String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为“不可变对象”。 那什么叫做“不可变对象”呢?指的是对象内部的成员变量的值无法再改变。我们打开String类的源码,如图

们发现字符串内容全部存储到value[]数组中,而变量value是final类型的,也就是常量(即只能被赋值一次)。 这就是“不可变对象”的典型定义方式。

我们发现在前面学习String的某些方法,比如:substring()是对字符串的截取操作,但本质是读取原字符串内容生成了新的字符串。

1. StringBuilder,Stringbuffer用法_jdk底层源码分析

(1) StringBuffer与StringBuilder的异同点是什么?

① 异:在这方面运行速度快慢为:StringBuilder > StringBuffer > String

在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的

② 同: StringBuffer和StringBuilder非常类似,均代表可变的字符序列。 这两个类都是抽象类AbstractStringBuilder的子类,方法几乎一模一样.

内部也是一个字符数组,但这个字符数组没有用final修饰,随时可以修改。

(2) String与StringBuffer的异同点是什么?

①String类是字符串常量,是不可更改的常量。

②StringBuffer类中的方法主要偏重于对于字符串的变化。

③String和StringBuffer他们都可以存储和操作字符串,即包含多个字符的字符串数据。

④StringBuffer类和String一样,也用来代表字符串。只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。

⑤所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。

⑥在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的。但是,对StringBuffer对象的每次修改都会改变对象自身,这点是和String类最大的区别。

⑦另外由于StringBuffer是线程安全的,所以在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。

⑧StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以 接受任意类型的数据。

⑨StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法。

string插入字符_String类相关推荐

  1. c++ string截取字符串_String类的常见用法

    字符串不变:字符串的值在创建后不能被更改.string对象是不可变的,所以它们可以被共享.string底层是靠字符数组实现的."abc"等效于char[] data={'a','b ...

  2. C++ STL笔记二:string容器;string构造函数;string赋值函数;string拼接;string查找、替换;string比较;string单个字符存取;string插入、删除、截取

    本质: string是C++风格的字符串,而string本质上是一个类. string和char*区别: char*是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一个ch ...

  3. HTML子选择器怎么加图,CSS伪类选择器:before、:after使用:插入字符、插入图片、插入项目编号...

    before: 伪元素选择器用于在某个元素之前插入一些内容 伪类选择器:before使用content属性插入字符.属性插入图片 css3 .p_before:before { content: 'H ...

  4. html伪类元素加图片,CSS伪类选择器:before、:after使用:插入字符、插入图片、插入项目编号...

    before: 伪元素选择器用于在某个元素之前插入一些内容 伪类选择器:before使用content属性插入字符.属性插入图片 css3 .p_before:before { content: 'H ...

  5. java .insert_Java StringBuffer.insert 插入字符

    首页 > 基础教程 > 常用类 > 常用 StringBuffer&StringBuilder 类 Java StringBuffer.insert 插入字符 java中St ...

  6. Java字符字符串类

    Java字符字符串类 Character 类 Character 类用于对单个字符进行操作.Character 类在对象中包装一个基本类型 char 的值在实际开发过程中,我们经常会遇到需要使用对象, ...

  7. java隐藏字符_Java原生隐藏字符-工具类

    package com.seesun2012.common.util; /** 隐藏字符-工具类 @author seesun2012@163.com */ public class HiddenCh ...

  8. oracle插入java时间,java向oracle中插入字符或时间型 时间数据

    /** * * @param date * @param bool true:插入时间类型,false:插入字符类型 * 向oracle中插入时间类型数据 * @return */ public st ...

  9. php批量新增数据类型,Yii框架批量插入数据扩展类的简单实现方法

    本文实例讲述了Yii框架批量插入数据扩展类的简单实现方法.分享给大家供大家参考,具体如下: MySQL INSERT语句允许插入多行数据,如下所示: INSERT INTO tbl_name (a,b ...

最新文章

  1. LVM创建,缩减及快照备份
  2. Java NIO框架Netty教程(一) – Hello Netty
  3. php zval_copy_static_var(),深入理解 PHP7 中全新的 zval 容器和引用计数机制
  4. 神马是敏捷?(4)——敏捷不能当饭吃
  5. MySQL select语句直接导出数据
  6. C++课程设计(电影院自助售票管理系统)
  7. VOSviewer | (二)入门-分析web of science
  8. 计算机操作系统|汤小丹|第四版|习题答案
  9. vscode利用ssh远程连接linux虚拟机
  10. D*路径搜索算法原理解析及Python实现
  11. vm服务器复制文件,怎么实现从宿主机拖动复制文件到虚拟机VM中的示例
  12. 龙骨(Dragonbones)在Unity中换装的实现
  13. vs code进行c/c++开发
  14. qurlinfo在qt5中_QT5编译使用QFtp的方法步骤
  15. 数据仓库系列--维度表技术
  16. CSS中英文换行问题
  17. Android安全测试神器大全
  18. 初二物理模型有哪些_初中物理:模型分类及示例
  19. 电子器件——钽电容的简介
  20. 【模电—低频学习笔记(一)】信号的频谱

热门文章

  1. [CB]加快BCB编译速度
  2. 商业智能常见名词浅释(转载)
  3. 面向对象编程的五大基本原则
  4. 当了几年程序员,是时候考虑以后的发展了
  5. 混口饭吃,谈不上喜欢
  6. 第五节:video标签的特性,你全都掌握了吗?
  7. 为什么链接oracle报错,PG连接Oracle报错解决
  8. Java制作一个盒子程序_编写一个简单的Java程序,模拟计算器的功能。
  9. python网络爬虫与信息提取视频_Python网络爬虫与信息提取入门5
  10. Nature | IL-27直接靶向脂肪细胞以促进产热而改善肥胖