• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
whn210
博客园    首页    新随笔    联系   管理    订阅  订阅

java中String,StringBuilder与StringBuffer区别及常用方法

String,StringBuilder与StringBuffer区别及常用方法

String,StringBuilder与StringBuffer区别

  1. String类是不可变类,String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象销毁。

  2. StringBuffer类则代表一个字符序列可变的字符串,可以通过append、insert、reverse、setChartAt、setLength等方法改变其内容。一旦生成了最终的字符串,调用toString方法将其转变为String

  3. JDK1.5新增了一个StringBuilder类,与StringBuffer相似,构造方法和方法基本相同。不同是StringBuffer是线程安全的,而StringBuilder是线程不安全的,所以性能略高。通常情况下,创建一个内容可变的字符串,应该优先考虑使用StringBuilder

    名称 初始JDK版本 效率 线程
    StringBuilder JDK1.5 效率高 线程不安全
    StringBuffer JDK1.0 效率低 线程安全

常用方法

StringBuilder与StringBuffer

  • append添加
  • delete(x,y)删除下标x到y位置上的字符
  • deleteCharAt删除指定下标的字符
  • insert(x,s)在小标x位置插入s
  • replace(x,y,str)将下标x到y替换为str
  • setCharAt替换指定位置下的字符
  • charAt查看指定下标下的字符
  • substring(x,y)截取下标x到y下的字符串
  • subSequence(x,y)截取下标x到y下的字符串
  • subSequence与subSequence区别
//   创建StringBuilder对象
        StringBuilder sb = new StringBuilder("hello");

//        append添加
        System.out.println(sb.append(" java"));//hello java

//        delete(x,y)删除下标x到y位置上的字符
        System.out.println(sb.delete(0,1));//ello java

//        deleteCharAt删除指定下标的字符
        System.out.println(sb.deleteCharAt(0));//llo java

//        insert(x,s)在小标x位置插入s
        System.out.println(sb.insert(sb.length()," !"));//llo java !

//        replace(x,y,str)将下标x到y替换为str
        System.out.println(sb.replace(4,8,"c++"));//llo c++ !

//        setCharAt替换指定位置下的字符
        sb.setCharAt(0, 'b');//blo c++ !
        System.out.println(sb);

//        charAt查看指定下标下的字符
        System.out.println(sb.charAt(0));//b

//        substring(x,y)截取下标x到y下的字符串
        System.out.println(sb.substring(0,3));//blo

//        subSequence(x,y)截取下标x到y下的字符串
        System.out.println(sb.subSequence(1,3));//lo

 /**
         * substring和subSequence的返回类型不一样,substring返回的是String,subSequence返回的是实现了CharSequence接口的类,
         * 使用subSequence得到的结果,只能使用CharSequence接口中的方法。
         * 在String类中已经重写了subSequence,调用subSequence方法,可以直接下转为String对象。
         */

String常用方法

  • 字符串的创建
  • isEmpty和isBlank的却别
  • chartAt获取指定下标字符
  • equals比较字符串
  • compareTo字符串比较
  • substring字符串截取
  • concat字符串拼接
  • replace指定字符替换
  • split字符串指定字符分割
  • toUpperCase字符串大写转换
  • toLowerCase字符串小写转换
  • trim去除字符串首尾空格
  • valueOf字符串类型转换
public class CommonMethod {
    public static void main(String[] args) {
//定义一个字符串
        String s="hello java";
//        通过构造器创建String对象
        String s1 =new String("hello word") ;
        String s2 = new String(new char[]{'h', 'e', 'l', 'l'});

        System.out.println("字符串长度"+s.length());//字符串长度1
//        isEmpty只有字符串是空值或是null时为true
        System.out.println("isEmpty判断字符串是否为空"+s1.isEmpty());//isEmpty判断字符串是否为空false
//        isBlank对于字符串中的空格换行符等统统作为空值处理
        System.out.println("isBlank判断字符串是否为空"+s1.isBlank());//isEmpty判断字符串是否为空false
        System.out.println("isBlank判断字符串是否为空"+" ".isBlank());//isEmpty判断字符串是否为空true
//        charAt获取字符串指定下标字符
        System.out.println("charAt获取字符串指定下标字符:"+s1.charAt(0));//charAt获取字符串指定下标字符:h
//        equals比较字符串
        System.out.println("equals比较字符串:"+s.equals(s1));//equals比较字符串:false
        System.out.println("equals比较字符串:"+s.equals("hello java"));//equals比较字符串:true
//        compareTo比较字符串时会返回第一个不一样字符的ASCII码的差值,如果短的字符串与长的字符串的前部分重合,则会返回他们的长度差为一个负数,两个字符串相等的时候返回0
        System.out.println("compareTo比较字符串:"+s.compareTo(s1));//compareTo比较字符串:-13
        System.out.println("compareTo比较字符串:"+"b".compareTo("a"));//compareTo比较字符串:1
        System.out.println("compareTo比较字符串:"+"sss".compareTo("sssssssss"));//compareTo比较字符串:-6

        //字符串的截取:
        System.out.println("substring(x)截取字符串下标x之后的所有字符"+s1.substring(3));//substring(x)截取字符串下标x之后的所有字符lo word
        System.out.println("substring(x, y)截取字符串下标x到y之间的字符"+s1.substring(3, 6));//substring(x, y)截取字符串下标x到y之间的字符lo
        //字符串的拼接操作:
        System.out.println("字符串的拼接操作:"+s1.concat("pppp"));//字符串的拼接操作:hello wordpppp
        //字符串中的字符的替换:
        System.out.println("replace('o', 'w')将字符串中的o全部替换为w:"+s1.replace('o', 'w'));//replace('o', 'w')将字符串中的o全部替换为w:hellw wwrd
        //split按照指定的字符串进行分裂为数组的形式:
        String s3 = "a-b-c-d-e-f";
        System.out.println(Arrays.toString(s3.split("-")));//[a, b, c, d, e, f]
        //转大小写的方法:
        String s4= "abc";
        System.out.println(s4.toUpperCase());//ABC
        System.out.println(s4.toUpperCase().toLowerCase());//abc
        //去除收尾空格:
        String s5 = "    a  b  c    ";
        System.out.println(s5.trim());//a  b  c
        //toString()
        String s6 = "abc";
        System.out.println(s6.toString());//abc
        //String.valueOf可以将对象类型,布尔类型,字符串数组等转换为String类型:
        System.out.println(String.valueOf(new char[]{'2','3'}));//23
    }
}

代码仓库

posted @ 2022-07-17 21:57  hnw  阅读(135)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3