String ,StringBuffer,StringBuilder的概念

本文详细介绍了Java中String、StringBuffer和StringBuilder三个类的功能与用法,包括字符串的创建、操作、转换及判断方法等,并对比了StringBuffer与StringBuilder的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String ,StringBuffer,StringBuilder的概念

* String类的特点* 字符串对象一旦被初始化 ,就不会被改变
* String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。
    因为 String 对象是不可变的,所以可以共享。例如:


 String str = "abc";
 等效于:
 char data[] = {'a', 'b', 'c'};
 String str = new String(data);

String s  = "abc";
String s2 = "abc";
System.out.println(s==s2);//true

/**
 * 一.获取
 * 1.获取字符串中字符 的个数(长度)
 *     int length();
 * 2.根据位置获取字符
 *     char charAt(int index)
 * 3.根据字符获取在字符串中的第一次出现 的索引
 *     int IndexOf(int in)
 *     int indexOf(int ch,int fromIndex)
 *     int indexOf(String str)
 *     int indexOf(String str ,int fromIndex)
 *
 *     lastIndexOf(int in)
 *  4.获取字符串中的一部分字符串,也叫子串
 *     String substring(int beginIndex,int endIndex)//包含begin,不包含end
 *
 *  二,转换
 *  1.将字符串变成 字符串数组(字符串的切割)
 *     String []  split(String regex):涉及到正则表达式
 *  2.将字符串变成 字符数组
 *     toCharArray() 将此字符串转换为一个新的字符数组
 *  3.将字符串转成字节数组
 *      getBytes(Charset charset) 使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。
    4.将字符串中的字母转成大小写
        toLowerCase()
        toUpperCase()
    5.将字符串中的内容进行替换
        replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
     6.将字符串两端的空格去除
        trim()
    7.将字符串进行连接
       concat(String str)  将指定字符串连接到此字符串的结尾。

 三,判断
  1.两个字符串内容是否相同
     equals(Object anObject) 将此字符串与指定的对象比较。
      equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写
 2.字符串是否包含指定字符串
     contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true。
 3.字符串
    startsWith(String prefix) 测试此字符串是否以指定的前缀开始
    endsWith(String suffix)  测试此字符串是否以指定的后缀结束。
 */

 
String s = "hello";
String ss = "hello";
String sss = new String("hello");
System.out.println(s == ss);//true
System.out.println(s.equals(ss));//true

System.out.println(s == sss);//false
System.out.println(s.equals(sss));//true

// String类中的equals复写Object中的equals建立了Sring类自己的判断字符串对象 是否相同 的依据
//其实就是比较字符串的内容


/**
 * StringBuffer:就是字符串缓冲区
 * 用于存储数据 的容器
 * 功能:
 * 1.增加数据
 *     append(boolean b)
 * 2.插入数据
 *     insert(int offset, boolean b) 将 boolean 参数的字符串表示形式插入此序列中
 。3.删除
        delete(int start, int end) 移除此序列的子字符串中的字符。包含头,不包含尾
    4.查找
        charAt(index)
        indexOf(string)
    5.修改
        replace()

//让一个字符串反转输出
String s  = "zxcvbnm";
StringBuffer stringBuffer = new StringBuffer();
for (int i = s.length()-1; i >-1 ; i--) {
    stringBuffer.append(s.charAt(i));
}
System.out.println(stringBuffer.toString());
System.out.println(stringBuffer.reverse().toString());//利用已有的方法进行反转输出

 
* StringBuffer和StringBuilder区别
* 1.5以后出现了StringBuilder
* 不同的是
* StringBuffer是安全的线程,,是线程同步 的,通常用于多线程
* StringBuilder是不安全的线程,是线程不同步 的,通常用于单线程,它的出现提高了效率
*/
public class StringBuilderDemo {
    public static void main(String[] args) {
        int[] arr = {3, 5, 2, 4, 9, 8, 7};
        String s = arrayToString(arr);
        System.out.println(s);

        StringBuilder ss =arrayToString2(arr);
        System.out.println(ss.toString());

    }

    //利用stringBuilder让数组转化成String
    private static StringBuilder arrayToString2(int[] arr) {
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                stringBuilder.append(arr[i]+",");
            } else {
                stringBuilder.append(arr[i]+"");
            }
        }
        return stringBuilder;
    }

    private static String arrayToString(int[] arr) {
        String str = "";
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                str += arr[i];
            } else {
                str += arr[i];
            }
        }
        return str;

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值