Java中String的学习与总结

构造方法

这里只介绍部分构造函数
  1. String()初始化空串
  2. String(byte[] bytes)byte类型数组,数据为char才能转为字符串
  3. String(byte[] bytes, Charset charset)以指定编码解析成字符串
  4. String(char[] value) char数组转为字符串
  5. String(String original) 获得的是original的副本
  6. String(StringBuffer buffer) StringBuffer 转为字符串
  7. String(StringBuilder builder) StringBuilder 转为字符串

方法

  1. charAt(int index) 返回索引处的字符
  2. codePointAt(int index) 返回索引处的代码点(我理解是ASCII处的整数值)
  3. compareTo(String anotherString) 两个字符串比较,0相等,正数大于,负数小于
  4. concat(String str) 字符串拼接
  5. contains(CharSequence s) 是否包含子串,只要是实现接口的类都可以
  6. contentEquals(CharSequence cs) 判断与cs是否相等,与equals相似
  7. copyValueOf(char[] data) 转为字符串,与ValueOf(char[])近似
  8. endsWith(String suffix) 是否已suffix为后缀
  9. equals(Object anObject) 判断两个字符串是否相等,不能==判断两个对象的相等
  10. getBytes()字符转为byte[]
  11. getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此字符串复制到目标字符数组。
  12. indexOf(int ch) 返回ch在字符串中首次出现的位置,它还有许多重载的方法,具体看下面的代码
  13. isEmpty() 判空
  14. lastIndexOf(int ch) 与indexOf()类似,就是逆向的首次位置
  15. length() 字符串长度
  16. replace(char oldChar, char newChar) 字符替换
  17. split(String regex, int limit) 字符切割,limit为切割为几块,没有此参数则全部切割
  18. join(CharSequence delimiter, CharSequence… elements)用delimiter连接集合中的元素,组成一个字符串
  19. startsWith(String prefix)判断前缀
  20. substring(int beginIndex, int endIndex) 判断子串
  21. toCharArray() 返回char[]
  22. toLowerCase() 转为小写
  23. toUpperCase() 转为大写
  24. trim()去掉前导和尾部的空白
  25. valueOf(boolean b)将对应的类型转为字符串,重载的方法,多类型

下面是实践的代码

public static void main(String[] args){
           //String 实现了Serializable, CharSequence,Compareable<String> 接口
        //1.下面介绍String 的构造方法
        String s1 = new String();//

        byte[] by = new byte[]{'1','2'};//byte[]转为String
        String s2 = new String(by);
        System.out.println(s2);

        Charset cs = Charset.forName("utf8");
        String s3 = new String(by, cs);//将by按cs编码,生成字符串;
        System.out.println(s3);

        char[] c1 = new char[]{'a','b','c'};
        String s4 = new String(c1);
        System.out.println(s4);
        String s5 = new String(c1,1,2);
        System.out.println(s5);
        String s6 = "s6";
        String s7 = new String(s6);//是s6的一个副本
        StringBuffer sb = new StringBuffer("stringbuffer");
        StringBuilder sb1 = new StringBuilder("stringbuilder");//用stringbuilder初始化
        System.out.println(sb);
        System.out.println(sb1);
        System.out.println(s7);

        //测试String的方法
        String tmp = "abcdefg";
        System.out.println(tmp.charAt(1));//返回字符串某位置的字符,返回类型是char
        System.out.println(tmp.codePointAt(1));//返回字符串指定索引处的字符,返回类型是int
        System.out.println(tmp.compareTo("AFHdfad"));//返回两个字符串比较的结果,0相等,正数大,负数小
        System.out.println(tmp.compareToIgnoreCase("ABCDEFG"));//忽略大小写的比较
        System.out.println(tmp.concat("hijk"));//返回拼接后的字符串
        System.out.println(tmp.contains("ab"));//是否包含CharSequence接口数据,该接口已实现的类包括(CharBuffer, Segment, String, StringBuffer, StringBuilder),返回类型是boolean
        System.out.println(tmp.contentEquals("hijk"));//比较是否相等,参数类型是CharSequence
        StringBuffer sb2 = new StringBuffer("sb2");
        System.out.println(tmp.contentEquals(sb2));//重载,参数类型是StringBuffer
        char[] c2 = new char[]{'c','d'};
        System.out.println(tmp.copyValueOf(c2));//返回表示指定数组中表示该字符序列的String,返回类型是String
        System.out.println(tmp.copyValueOf(c2,0,1));//返回表示指定数组中表示该字符序列的String,offset:起始位置,count:数量,返回类型是String
        System.out.println(tmp.endsWith("fg"));//是否以参数为后缀,返回类型是boolean
        System.out.println(tmp.equals("hijk"));//判断是否相等,返回类型是boolean
        System.out.println(tmp.equalsIgnoreCase("dfadfadf"));//判断是否相等,忽略大小写,返回类型是boolean
        byte[] byt = tmp.getBytes();//返回byte字符数组
        for(byte b:byt){
            System.out.print(b);
        }
        System.out.println();
        char[] c3 = new char[100];
        tmp.getChars(0,tmp.length(),c3,0);//将指定长度的紫川复制到char数组中,最后一个参数是其起始位置
        for(char b:c3){
            System.out.print(b);
        }
        System.out.println();
        System.out.println(tmp.indexOf('g'));//查找下标,参数是正数类型,可以传入ASCII对应的整数,也可以传入字符,返回类型是int
        System.out.println(tmp.indexOf('g',1));//查找下标,参数是正数类型,可以传入ASCII对应的整数,也可以传入字符,从指定下标开始,返回类型是int
        System.out.println(tmp.indexOf("ef"));//查找子串对应的起始位置,第一个出现的位置,
        System.out.println(tmp.indexOf("ef",3));//查找子串对应的起始位置,第一个出现的位置,
        System.out.println(tmp.isEmpty());//是否为空串,返回boolean
        String[] str = new String[]{"12","34"};
        String s8 = String.join("->",str);//第一个参数是charSequence,第二个参数是charSequence集合,将集合中的元素用第一个参数串联起来
        //lastIndexOf 与indexOf相似,都是查找目标字符或者字符串的位置,区别是一个向前,一个向后
        System.out.println(s8);
        System.out.println(tmp.length());//字符串长度
        System.out.println(tmp.replace('a','B'));//替换,全部替换为第二个参数的字符
        String tmp2 = "192.168.1.9";
        String[] str3 = tmp2.split("\\.");//根据传入的参数切割为String字符串
        for(String s: str3){
            System.out.print(s);
        }
        System.out.println();
        String[] str4 = tmp2.split("\\.",2);//切割为2部分
        for(String s: str4){
            System.out.print(s);
        }
        System.out.println();

        System.out.println(tmp.startsWith("ab"));//判断参数是否是其前缀,
        System.out.println(tmp.startsWith("ab",3));//判断参数是否是其前缀,从第二个参数开始
        System.out.println(tmp.substring(3));//获取子串
        System.out.println(tmp.substring(1,3));//获取子串,不包括结束为止字符
        System.out.println(tmp.toLowerCase());//小写
        System.out.println(tmp.toUpperCase());//大写
        String tmp3 = " y e s ";
        System.out.println(tmp3.trim());//去掉字符串中的前导空白和尾部空白
        System.out.println(String.valueOf(10));//转为字符串类型




    }

代码结果

在这里插入图片描述

总结

对于String 的迭代,可以使用for循环,利用charAt(i)获取,或者用for(Character c: A) 来遍历。
最近开始学习java,并试着学习怎么写总结。希望自己在Java上的理解要透彻,对一些基础的代码上,要做到手写,不能每次都去查询API。加油向前冲!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值