String类、StringBuffer、StringBuilder

String类的构造方法:

1.直接构造

String str = "HelloWorld";

 2.将字符串封装成字符串对象

String str2 = new String("HelloWorld");

3.将字符数组的数据封装成字符串对象

char[] array = {'H','e','l','l','0','W','o','r','l','d'};
String str3 = new String(array);

4.将字符数组的数据从索引2开始解析2个长度

char[] array2 = {'H','e','l','l','0','W','o','r','l','d'};
String str4 = new String(array2,2,2);
System.out.println(str4);
// 输出结果为 ll

5. 把字节整数型数组按照ASCII码表解析成字符串

byte[] bytes = {97,98,99,100,101,102};// byte取值范围 -128~127 如果超过这个范围则编译错误
String str5 = new String(bytes);
System.out.println(str5);
// 输出结果为 abcdef

6. 对字节整数型数组从索引为2开始解析2个长度

byte[] bytes2 = {97,98,99,100,101,102};
String str6 = new String(bytes2,2,2);
System.out.println(str6);
// 输出结果为 cd

String类的不可变性

public static void main(String[] args) {
   String str = "HelloWorld";
   String str2 = str;
   str = "GoodBye";
   System.out.println("str:"+str);
   System.out.println("str2:"+str2);
}

输出结果:

 为什么修改了str的值,str2的值没有一起修改呢?这是因为String是引用数据类型,是不可变的

 

我们通过修改str=“GoodBye”,只是在字符串池中新建了一个“GoodBye”,并且将str的栈内存地址修改所对应的地址,而str2的地址还是不变的


 

 

String类的方法摘要:

返回指定索引处的 char 值 。

String str = "HelloWorld";
System.out.println(str.charAt(0));
// 输出结果 H

返回指定索引处的字符(Unicode 代码点)。

String str = "HelloWorld";
System.out.println(str.codePointAt(3));
// 输出结果为 108,输出下标为 3 的字母 l 所对应的Unicode编码 为108(十进制)

返回指定索引之前的字符(Unicode 代码点)。

String str = "HelloWorld";
System.out.println(str.codePointBefore(2));
// 输出结果为 101,输出下标为 2 的字母 l 之前的字母 e 所对应的Unicode编码 为101(十进制)

 将指定字符串连接到此字符串的结尾。

String str = "Hello";
System.out.println(str.concat("World"));
// 输出结果为 HelloWorld

当且仅当此字符串包含指定的 char 值序列时,返回 true。

String str = "Hello";
System.out.println(str.contains("Hell"));
System.out.println(str.contains("World"));
// 输出结果为 第一个是 true  第二个是 false

返回指定字符在此字符串中第一次出现处的索引。

String str = "Hello";
System.out.println(str.indexOf("l"));
// 输出结果为 2

判断字符串是否为空(空则返回true,反之返回false)。

String str = "HelloWorld";
String str2 = "";
System.out.println(str.isEmpty());
System.out.println(str2.isEmpty());
// 输出结果为 false 、 true

返回指定字符在此字符串中最后一次出现处的索引。

String str = "HelloWorld";
System.out.println(str.lastIndexOf("l"));
// 输出结果为 8

返回此字符串的长度。

String str = "HelloWorld";
System.out.println(str.length());
// 输出结果为 10

使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。

String str = "HelloWorld";
System.out.println(str.replace("World","世界"));
// 输出结果为 Hello世界

根据关键字拆分字符串。

String str = "HelloWorld";
String[] str2 = str.split("l");
 for(String s :str2){
   System.out.println(s);
  }
// 输出结果为 He oWor d

返回一个新的字符串,它是此字符串的一个子字符串。

String str = "HelloWorld";
System.out.println(str.substring(5));
// 输出结果为 World

将此字符串转换为一个新的字符数组。

String str = "HelloWorld";
char[] chars = str.toCharArray();
for (char aChar : chars) {
     System.out.println(aChar);
}
// 输出结果为 H、e、l、l、o、W、o、r、l、d

使用默认语言环境的规则将此 String 中的所有字符都转换为小写。

String str = "HelloWorld";
System.out.println(str.toLowerCase());
// 输出结果为 helloworld

使用默认语言环境的规则将此 String 中的所有字符都转换为大写。

String str = "HelloWorld";
System.out.println(str.toUpperCase());
// 输出结果为 HELLOWORLD

返回字符串的副本,忽略前导空白和尾部空白。

String str = "   He lloWorld   ";
System.out.println(str.trim());
// 输出结果为 He lloWorld

StringBuffer和StringBuilder

StringBuffer和StringBuilder的方法基本上相同

区别:

StringBuffer线程安全

StringBuilder线程不安全

StringBuilder:

 StringBuilder sb=new StringBuilder();
       //添加内容到容器尾部
        sb.append("aaaaa");
        //删除第一个到第二个的元素
        sb.delete(1,2);
        //插入元素到指定位置
        sb.insert(2,"bbb");
        //删除指定位置的元素
        sb.deleteCharAt(2);
        //替换指定位置的元素
        sb.replace(1,3,"ccc");
        //反转内容
        sb.reverse();
        //截取内容返回一个字符串
        System.out.println(sb.substring(1));
        sb.append("weweraereasearaerwarsa");
        //获取string buffer的长度
        System.out.println(sb.length());
        //将stringbuffer转成string对象
        String sb1 = sb.toString();
        System.out.println(sb);

StringBuffer: 

StringBuffer sb = new StringBuffer("aaa");
        //添加内容到容器尾部
        sb.append("aaaaa");
        //删除第一个到第二个的元素
        sb.delete(1,2);
        //插入元素到指定位置
        sb.insert(2,"bbb");
        //删除指定位置的元素
        sb.deleteCharAt(2);
        //替换指定位置的元素
        sb.replace(1,3,"ccc");
        //反转内容
        sb.reverse();
        //截取内容返回一个字符串
        System.out.println(sb.substring(1));
        sb.append("weweraereasearaerwarsa");
        //获取string buffer的长度
        System.out.println(sb.length());
        //将stringbuffer转成string对象
        String sb1 = sb.toString();
        System.out.println(sb);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值