Java中的常用类(二)

一、String类

1、解释:
String类位于JAVA中的java.lang.String包中,java中所有的字符串都是此类的实例
其底层代码是将char数组进行封装操作,例如
"abc"--->是字符串对象,底层是 private final char value['a','b','c'];
2、字符串的创建方式 
1、 String s="abc";
需要注意的是,按照此方法创建两个值一样的字符串时,不会创建新的String类对象,而是调用旧的地址
        
String s ="abc";
String ss="abc";
System.out.println(s==ss);//true
2、String s1=new String("abc");
这样创建的是两个不同的字符串
        
String s1=new String("abc");
String s2=new String("abc");
System.out.println(s2==s1);//false
3、字符串的值不可改变
但是我们日常写代码时,字符串可以添加,原理如下
        
//public final class String
String s3="abcd";
s3+="efg";//创建新的字符串"abcdefg"
s3+="1111";//再次创建新的字符串"abcdefg1111"
3、String类的方法
1、四种构造方法+对象.getBytes();+对象.getCharArray();
        构造方法
        String();
        String(String s)
        String(byte[] byte)
        String(char[] chars)
         */

        String s1 =new String();//无参构造
        String s2 =new String("abc");//有参构造


        //现代传输为数字话传输
        String s3="你好";
        //明码编码
        byte[] ss3=s3.getBytes();//String类的方法,将字符串转为byte类型
        //解码 字节数组转为字符串
        String s4=new String(ss3);//String(byte[] byte)
        System.out.println(s4);


        //当使用特殊的编码时 函数后面+throws UnsupportedEncodingException
        byte[] sss3=s3.getBytes("GBK");//中文编码
        String ss4=new String(sss3, "GBK");//String
        System.out.println(ss4);

        //当想要用Arrays的方法操作字符串时
        String str="cba";
        char[] chars=str.toCharArray();//将字符产转换成字符数组
        Arrays.sort(chars);//可以使用数组的方法,例如此例 字符数组排序
        String s5=new String(chars);//需要定义新字符串接收
        System.out.println(s5);
2、六种判断功能
 
/*
        判断功能
        boolean equals(Object anObject)
        boolean equalsIgnoreCase(String anotherString)
        boolean contains(CharSequence s)
        boolean startsWith(String prefix)
        boolean endsWith(String suffix)
        boolean isEmpty
*/
        String s10="abcd";
        String s20="abcD";
        System.out.println(s10.equals(s20));//比较是否一致
        System.out.println(s10.equalsIgnoreCase(s20));//忽略大小写比较
        System.out.println(s10.contains("ab"));//判断是否包含指定的子串
        System.out.println(s10.startsWith("ac"));//判断是否为指定的字符串开头
        System.out.println(s10.endsWith("cd"));//判断是否以指定的字符串结尾
        System.out.println(s10.isEmpty());//判断字符串是否为空
3、获取功能
/*
        获取功能
        int length() 获取字符串长度
        char charAt(int index)获取指定位置上的字符
        int indexOf(String str)返回字符串首次出现的位置
        int indexOf(String str, int fromIndex) 从指定位置开始查找指定字符
        int lastIndexOf(String str)//从后向前找
        int lastIndexOf(String str, int fromIndex)//指定位置从后往前找
        String substring(int beginIndex)从起始位置开始截取后面打印
        String substring(int beginIndex, int endIndex)从指定范围内截取打印
         */
        String str1="abcdefg";
        System.out.println(str1.length());//获取长度,长度包括空格等
        System.out.println(str1.charAt(2));//返回索引位置上的字符
        System.out.println(str1.indexOf("c"));//返回查找字符的索引
        System.out.println(str1.indexOf("c",3));//从指定位置开始查找
        System.out.println(str1.lastIndexOf("c"));//从后向前找
        System.out.println(str1.lastIndexOf("c",7));//从指定位置从后往前找
        System.out.println(str1.substring(1));//从起始位置开始截取后面打印
        System.out.println(str1);
        System.out.println(str1.substring(0,6));//从指定范围内截取打印
4、转换功能
byte[] getBytes(); 将字符串转为byte类型
        char[] toCharArray(); 将字符串转为字符数组
        String valueOf(int i) 将int转String
        String valueOf(char data[]) 将char[]转String
        String toLowerCase()//转小写
        String toUpperCase()//转大写
        String concat(String str)将str拼接在原字符串后
        String[] split(String regex)//将字符串按照指定的分割符号拆分 并存入字符串数组

        使用方法
        String str2 =String.valueOf(1000);
        System.out.println(str.charAt(1));//0
        int a=Integer.parseInt(str2);//String 转 int
        System.out.println(a);

        String str3=String.valueOf("abc".toCharArray());//将"abc"转为数组再转会字符串
        System.out.println(str3);
        String str4="abcAd";
        System.out.println(str4.toLowerCase());//转小写
        System.out.println(str4.toUpperCase());//转大写
        System.out.println(str4.concat(str3));//拼接

        String str5="ab;cdE;FG";
        String[] strings=str5.split(";");//将字符串按照指定的分割符号拆分 并存入字符串数组
        System.out.println(Arrays.toString(strings));//[ab, cdE, FG]
5、替换功能
        String replace(CharSequence target, CharSequence replacement)
        //将字符串中指定的所有字符替换成新的指定字符
        String replaceAll(String regex, String replacement)
        //通过正则表达式匹配将同一类全部替换 "\\d"表示数字,"[a-z]"表示字母
        String replaceFirst(String regex, String replacement)
        //通过正则表达式匹配将该类第一个出现的字符替换
        String trim()
        //消除字符串两边的空格 中间无法消除
        //如果想要消除中间的可以用replace替换

        String Str =" abcdefg123 ";//将小写的c用大写的C替换
        System.out.println(Str.replace("c","C"));//将小写的c用大写的C替换
        System.out.println(Str.replaceAll("\\d","C"));//通过正则表达式将同一类全部替换
        System.out.println(Str.replaceFirst("\\d","e"));//将第一个数字替换成e
        System.out.println(Str.length());//由空格 长度12
        System.out.println(Str.trim().length());//消除两侧空格 无空格 长度10

二、StrinigBuffer类

1、解释
    StringBuffer可以更好的进行字符串拼接,相比String类单纯拼接更加省时省空间。StringBuffer是线程安全的可变字符序列、是内容可以改变的字符串
    StringBuffer底层是char[] value,String类底层是private final char value[],StringBuffer可改变的原因就是没有final修饰。每次添加内容都是对此数组进行操作,不会创建新的对象
当字符数组满了之后会再StringBuffer类内部创建新的数组对象。需要注意的是StringBuffer类型的字符串在调用操作时的改变会影响自身的值
2、方法
1、构造方法
        public StringBuffer(String str) {
        super(str.length() + 16);
        append(str);
        }
        public StringBuffer() {
        super(16);
        }
        public StringBuffer(int capacity) {
        super(capacity);
        }

    //创建一个内容长度+16的字符数组
        StringBuffer s1=new StringBuffer("abcd");
        s1.append("efg");//+efg,但不创建新的数组
        StringBuffer s2=new StringBuffer();//空参数组长度为16
        //StringBuffer s1=new StringBuffer("abcd");实参构造为内容长度+16的字符数组
        StringBuffer s3=new StringBuffer(100);//可以指定数组长度

构造分为三种方法,分别是无参构造(),传入字符串构造,传入长度构造。空参构造时默认长度为十六,传入字符串构造时,默认长度为字符串长度+16.

2、插入

        StringBuffer insert(int offset, String str)
        StringBuffer append(String str)
     例:
        System.out.println(s1);//abcdefg
        s1.insert(1,"a");//想指定位置插入
        s1.append("ab");//向末尾插入
        System.out.println(s1);//aabcdefgab

插入分为两种方法,insert是指定位置插入,append是向末位插入,两种方法都是非静态方法,需要创建对象之后调用。

3、删除

       StringBuffer deleteCharAt(int index)
        StringBuffer delete(int start, int end)
      例:
        s1.deleteCharAt(1);//指定位置删除
        System.out.println(s1);//abcdefgab
        s1.delete(0,3);//删除指定区间的元素 0,1,2位置的元素
        System.out.println(s1);//defgab

删除同样是两种方法,deleteCharAt是指定位置删除,需要传入索引值;delete是删除区间元素,需要给出索引范围。两种方法都是非静态方法,需要创建对象之后调用。

4、替换
//StringBuffer replace(int start, int end, String str)在区间内替换
      例:
        s1.replace(0,3,"aaa");
        System.out.println(s1);//aaagab

替换只有一种方法,replace传入范围和替换的元素,完成替换。这是非静态方法,需要创建对象之后调用。

5、反转逆序
        StringBuffer reverse()
      例:
      s1.reverse();
        System.out.println(s1);//bagaaa

reverse是反转字符串的一种方法,将字符串逆序排列。这是非静态方法,需要创建对象之后调用。

三、StringBuilder类 

其是多线程并发且线程安全的StringBuffer类,与StringBuffer用法大致相同,StringBuffer由于方法上没有加锁,在多任务执行时线程不安全,只适合单线程运行

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京最后的深情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值