字符串本质

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);
原文地址:https://www.cnblogs.com/dedema/p/10784256.html