java编程工具类之StringBuffer+StringBuilder

简介: ## 字符串相关的类## java.lang包 String Serializable,CharSequence,Comparable 非常特殊的类 可以像常量一样创建对象 String str = "abc"; 内存存储 "abc"对象 char[] value String不可变特性 private final char[] value; 频繁的修改其内容的时候 性能很不好 StringBuffer## StringBuilder 1.所属的包 java.lang包 2.继承Abstr

## 字符串相关的类

## java.lang包

   String  

   Serializable,CharSequence,Comparable

   非常特殊的类   可以像常量一样创建对象

   String str = "abc";

   内存存储   "abc"对象  char[]  value

   String不可变特性 private final char[] value;

   频繁的修改其内容的时候   性能很不好

   StringBuffer

## StringBuilder

   1.所属的包  java.lang包

   2.继承AbstractStringBuilder 间接继承 Object  

   实现接口Serializable,CharSequence,Appendable

   StringBuffer/StringBuilder没有compareTo方法

   StringBuffer/StringBuilder含有一个String没有的方法 append();拼接

   3.特性

   可变字符串   char[] value;  动态扩容

   4.对象的构建

   //无参数构造方法  构建一个默认长度16个空间的对象  char[]

   StringBuilder builder = new StringBuilder();

   //利用给定的参数 构建一个自定义长度空间的对象 char[]

   StringBuilder builder = new StringBuilder(20);

   //利用带String参数的构造方法  默认数组长度字符串长度+16个

   StringBuilder builder = new StringBuilder("abc");

   5.StringBuilder中常用的方法

   最主要的方法 append()  频繁的拼接字符串的时候使用此方法 提高性能

   ensureCapacity(int minimumCapacity)  确保底层数组容量够用

   capacity();//字符串底层char[]的容量

   length();//字符串有效元素个数(长度)

   setLength();//设置字符串的有效元素个数

   char = charAt(int index);

   int = codePointAt(int index);

   String = substring(int start [,int end]);

   注意需要接受返回值 看见截取出来的新字符串效果

   StringBuilder = delete(int start [,int end]);

    StringBuilder类中独有的方法String类没有

    将start到end之间的字符串删掉  不用接受返回值就看到效果啦

   StringBuilder = deleteCharAt(int index);

    String类中没有的方法

    将给定index位置的某一个字符删除掉啦

   int = indexOf(String str [,int fromIndex]);

   int = lastIndexOf(String str [,int fromIndex])

    找寻给定的str在字符串中第一次出现的索引位置  带重载 则从某一个位置开始找

insert(int index,value);

 将给定的value插入在index位置之上

replace(int start,int end,String str);

 将start和end之间的部分替换成str

 builder.replace(2,5,"zzt");

setCharAt(int index,char value);

 将index位置的字符改成给定的value

toString()

 将StringBuilder对象 构建成一个string对象 返回

trimToSize()

 将数组中无用的容量去掉  变成length长度的数组

目录
相关文章
|
1月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
143 57
|
3天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
1月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
53 8
|
29天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
50 2
|
1月前
|
安全
String、StringBuffer、StringBuilder的区别
String 由 char[] 数组构成,使用了 final 修饰,对 String 进行改变时每次都会新生成一个 String 对象,然后把指针指向新的引用对象。 StringBuffer可变并且线程安全;有一定缓冲区容量,字符串大小没超过容量,不会重新分配新的容量,适合多线程操作字符串; StringBuiler可变并且线程不安全。速度比StringBuffer更快,适合单线程操作字符串。 操作少量字符数据用 String;单线程操作大量数据用 StringBuilder;多线程操作大量数据用 StringBuffer
|
1月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
133 4
|
1月前
|
Java Android开发
Eclipse 创建 Java 类
Eclipse 创建 Java 类
28 0
|
1天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
3天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。