• 字符串本质


    String

        String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的对象 

        特点:【1】字符串本质上是一个字符数组,它们的值在创建之后不能更改,所以字符串是常量;

           【2】可以把字符串看出是字符数组的包装类,内部声明一个private final char value[];

    String :   常见构造方法

    public static void main(String[] args) {
            // 在堆区初始化一个空字符串
            String str1 = new String();
            
            // 通过一个字节数组构建一个字符串
            byte[] bytes = {97,98,99};
            // 通过使用平台的默认字符集解码指定的 byte 数组
            // System.out.println(Charset.defaultCharset());
            String str2 = new String(bytes);
            System.out.println(str2);
            
            byte[] byte2 = {-42,-48};
            String str3 = null;
            try {
                // 使用指定的字符集对字节序列进行解码
                str3 = new String(byte2,"GBK");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            System.out.println(str3);
            
            // 需求:对一个utf-8的字节序列进行解码
            byte[] byte3 = {-28,-72,-83,-28,-72,-83};
            try {
                // sssString str4 = new String(byte3, "UTF-8");
                String str4 = new String(byte3,0,3, "UTF-8");
                System.out.println("str4:"+str4);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            
            // 通过字符数组构建字符串
            char[] c1 = {'a','b','c','中','国'};
            // String str5 = new String(c1);
            String str5 = new String(c1,0,3);
            System.out.println(str5);
            
            String str6 = new String("abc");
            String str7 = "abc";
            System.out.println(str6 == str7);
            
        }

    String 字符串的比较    

          CharSequence 接口把字符串看出一个可读序列,提供了charAt(index)获取指定索引处的字符;length() 字符数组或者字符串的长度。

    String 查找、搜索字符串 

         

        String str1 = "hello world";
            
            // 是否包含子串
            System.out.println(str1.contains("world"));
            
            System.out.println(str1.startsWith("he"));
            System.out.println(str1.endsWith("world"));
            System.out.println(str1.startsWith("ll", 2));
      // 需求:判断一个文件是否是png图片
            String fileName = "logo.png";
            if(fileName.endsWith(".png")) {
                System.out.println(fileName+"是一张图片");
            }
            
            
      // 查找字符串
            String str2 = "hello world hello";
            // 从左向右查找字符'o'第一次出现的位置,找到返回索引,没找到返回-1
            System.out.println(str2.indexOf('t'));
            System.out.println(str2.indexOf('o',5));

          格式化字符串:通过指定占位符(%开始)格式化字符串

    %d

    格式化整形

    %f

    格式化浮点型

    %.nf

    格式化浮点型四舍五入保留n为小数,

    %c

    格式化字符

    %s

    格式化字符串

        [5] 把字符串按指定编码集编码成对于的字节序列

    String str3 = "abc";
            String str3 = "中国";        
            // 使用默认的字符集(GBK)
            byte[] byte1 = str3.getBytes();
            System.out.println(Arrays.toString(byte1));
            
            
            //String str4 = "abc";
            String str4 = "中国";    
            // 使用utf8编码
            byte[] bytes2 = str4.getBytes("UTF-8");
            System.out.println(Arrays.toString(bytes2));    

        [6]替换字符串

      String newStr2 = str1.replace("ll", "");
        // 正则表达式专门用于验证字符串是否符合特定的格式。
            String str4 = "6764";
            // 验证str4是否输入的是一串数字
            boolean r = str4.matches("\d+");
            System.out.println(r);
        // 需求:abc123te23daf去掉数字
            String str5 = "abc123te23daf";
    //        String newStr5 = str5.replaceAll("\d+", "");
            String newStr5 = str5.replaceFirst("\d+", "");
            System.out.println(newStr5);
  • 相关阅读:
    BSGS
    [AT1252] IOIOI カード占い
    [十二省联考2019]春节十二响
    [CF912E] Prime Gift
    CDQ分治
    [CF747F] Igor and Interesting Numbers
    [十二省联考2019]异或粽子
    51Nod 2128 前缀异或
    51Nod 3212 数字变位
    HDU 1106 排序
  • 原文地址:https://www.cnblogs.com/dedema/p/10784256.html
Copyright © 2020-2023  润新知