• 字符串本质


    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);
  • 相关阅读:
    JZOJ 3034. 【NOIP2012模拟10.17】独立集
    JZOJ 3035. 【NOIP2012模拟10.17】铁轨
    JZOJ 1259. 牛棚安排
    数位DP JZOJ 3316. 非回文数字
    JZOJ 3046. 游戏
    JZOJ 3013. 填充棋盘
    debian 安装oracle提供的java8
    java 汉字转拼音 PinYin4j
    debian ssh设置root权限登陆 Permission denied, please try again
    java并发下订单生成策略
  • 原文地址:https://www.cnblogs.com/dedema/p/10784256.html
Copyright © 2020-2023  润新知