String、StringBuilder、StringBuffer的常用方法

这三种都是字符串类型的,String 是字符串常量,StringBuilder、StringBuffer是字符串变量

StringStringBufferStringBuilder
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间StringBuffer是可变类,利用缓存区把数组长度设为可变的,线程安全,可以同步可变类,速度更快;利用缓存区把数组长度设为可变的,不能安全使用多线程,不能同步
不可变可变可变
线程安全线程不安全
多线程操作字符串单线程操作字符串

三个的改变字符的速度:
StringBuilder>StringBuffer>String

1.String类:

首先是String类的地址判断:
判断可以根据String的值在编译时产生的,还是运行时产生。含有变量的就是运行时产生的,和编译时产生的地址肯定不同
String是一个final类,abc是一个常量存在常量池中str1="abc"是编译完成时,赋值。先在常量池找abc,找到了就不再继续存了。所以第一个是为true。第二个因为实例化了两次,所以地址肯定不同。第三个内容都不一样所以为false。第四个和第五个都含有变量都是运行时才产生的,所以和编译时产生的ss1地址不同,所以都为false。第六个ss6不含有变量,所以在编译时产生的,所以为true。

        String str1="abc";
        String str2="abc";
        System.out.println(str1==str2);  //true
        System.out.println("--");
        String s3=new String("abc");
        String s4=new String("abc");
        System.out.println(s3==s4);//false
        String ss1="abc";
        String ss2="ab";
        String ss3=ss2+"c";  
        String ss4="c";
        String ss5=ss2+ss4;
        String ss6="ab"+"c";
        System.out.println(ss1==ss2);//false
        System.out.println(ss1==ss3);//false
        System.out.println(ss1==ss5);//false
        System.out.println(ss1==ss6);//true

String的常用方法:
String类的方法:

  • equals:判断两字符串是否相等
  • toUpperCase:字母大写
  • toLowerCase:字母小写
  • trim:去掉两边的空格
  • indexOf:第一次出现的位置
  • lastindexOf:最后一次出现的位置
  • substring:截取字符串(不含末尾的那个)
  • endWish:以什么为结尾,返回true和false
  • toCharArray:转换成char数组
        String s6="ABCDabcd中国";
        String s7=s6.toUpperCase();//大写
        String s8=s6.toLowerCase();//小写	
        System.out.println(s7);	//ABCDABCD中国
        System.out.println(s8); //abcdabcd中国
        String name=" javasun ";
        System.out.println(name.trim());//去掉两边的空格   javasun
        String em="1045535878@qq.com";
        System.out.println(em.indexOf("@"));   //第一次出现   10
        System.out.println(em.lastIndexOf("@"));  //最后一次出现   10
        System.out.println(em.substring(em.lastIndexOf("@"),em.lastIndexOf(".")));    //截取字符串   @qq
        System.out.println(em.endsWith(".com"));  //是否以啥结尾   true
        String str0="AB中国";
        char[] ch1=str0.toCharArray();		//转换成char[]数组
        System.out.println(Arrays.toString(ch1));  //[A, B, 中, 国]

2.StringBuilder、StringBuffer类:
这两个类的常用方法相同。使用时注意需要初始化。
StringBuilder和StringBuffer类的方法:

  • append:连接字符,添加字符串
  • insert:按照指定的数位,添加字符
  • delete:删除指定数位,不包含后面那个
  • replace:指定数位的替换
  • reverse:将字符串相反过来
  • toString:返回String类型
        //StringBuilder实例化
        StringBuilder sb=new StringBuilder();
        //append连接字符,相当于String +
        sb.append("江西南昌").append("javasun");
        System.out.println(sb);//江西南昌javasun
        //在下标2处,增加个u
        sb.insert(2,"u");
        System.out.println(sb);//江西u南昌javasun
        //从下标0到下标3不含结束位置,删除
        sb.delete(0,3);//南昌javasun
        System.out.println(sb);
        sb.replace(3,5,"中国");//替换
        System.out.println(sb);//南昌j中国asun
        sb.reverse();//反过来
        System.out.println(sb);//nusa国中j昌南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值