IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> String对象 -> 正文阅读

[Java知识库]String对象

String类

  1. String对象用于保存字符串,也就是一组字符序列。
  2. 字符串常量对象是用双引号括起来的字符序列。
  3. 字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节。
  4. String类较常用构造器:
String s1 = new String();
String s2 = new String(String original);
String s3 = new String(char[] a);
String s4 = new String(char[] a, int startIndex, int count);
  1. String类实现了接口 Serializable【String可以串行化:可以在网络传输】
    接口 Comparable【String对象可以比较大小】
  2. String是final类,不能被其他的类继承。
  3. String有属性,private final char value[]; 用于存放字符串内容。
  4. 一定要注意:value是一个final类型,不可以修改。即value不能指向新的地址,但是单个字符内容是可以变化。

String类

  • 两种创建String对象的区别
    方式一:直接赋值 String s = "hsp"
    方式二:调用构造器String s2 = new String("hsp");

    方式一:先从常量池查看是否有 hsp数据空间,如果有,直接指向;如果没有则重新创建,然后指向。最终指向的是常量池的空间地址。
    方式二:先在堆中创建空间,里面维护了value属性,指向常量池的 hsp空间。如果常量池没有hsp,重新创建,如果有,直接通过value指向。最终指向的是堆中的空间地址。

String类是保存字符串常量的。每次更新都需要重新开辟空间,效率较低,因此java设计者提供了StringBuilder和StringBuffer来增强String的功能,并提高效率。

StringBuffer类

java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。
许多方法与String相同,但是StringBuffer是可变长度的。
StringBuffer是一个容器。

  • StringBuffer是final类;
  • 实现了Serializable接口,可以保存到文件,或网络传输;
  • 继承了抽象类AbstractStringBuilder;
  • AbstractStringBuilder中有属性char[] value,不是final,该value数组存放字符串内容,因此存放在堆中;
  • StringBuffer是一个final类,不能被继承。

String VS StringBuffer

  1. String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低。private final char value[];
  2. StringBuffer保存的是字符串常量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不能更新地址,效率较高。char[] value;这个放在堆中。

StringBuilder

  1. 一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全)。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候 。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。
  2. 在StringBuilder上的主要操作是append和insert方法,可重载这些方法,以接受任意类型的数据。

区别

StringBuilder和StringBuffer非常类似,均代表可变的字符序列,而且方法也不一样。
String:不可变字符序列,效率低,但是复用率高。
StringBuffer:可变字符序列、效率较高(增删)、线程安全。
StringBuilder:可变字符序列、效率最高、线程不安全。

String、StringBuffer和StringBuilder的选择
使用原则:
如果字符串存在大量的修改操作,一般使用StringBuilder或StringBuffer。
如果字符串存在大量的修改操作,并在单线程的情况,使用StringBuilder。
如果字符串存在大量的修改操作,并在多线程的情况,使用StringBuffer。
如果我们字符串很少修改,被多个对象引用,使用String,比如配置信息等。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 07:54:27  更:2022-05-08 07:56:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:31:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码