美文网首页
Java核心类-字符串和编码

Java核心类-字符串和编码

作者: chrisghb | 来源:发表于2019-12-24 19:11 被阅读0次
    • String
      Java中,String是一个引用类型,它本身也是一个class
      因为String太常用了,所以Java提供了" "这种字符串字面量表示方法。
      字符串在String内部是通过一个char[]数组表示的。
    String s2 = new String(new char[] {'H', 'e', 'l', 'l', 'o', '!'});
    

    Java字符串的一个重要特点就是字符串不可变。这种不可变性是通过内部的private final char[]字段。
    字符串操作不改变原字符串内容,而是返回新字符串;

    • 字符串比较
      比较字符串的内容是否相同。必须使用equals()方法,而不能用==。要忽略大小写比较,使用equalsIgnoreCase()方法。
      1.原始数据类型, 他们之间的比较,应用双等号==,比较的是他们的值。
      2.引用类型,当他们用==进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false
    • 搜索子串
    "Hello".contains("ll"); // true
    "Hello".indexOf("l"); // 2
    "Hello".lastIndexOf("l"); // 3
    "Hello".startsWith("He"); // true
    "Hello".endsWith("lo"); // true
    
    • 提取子串
    "Hello".substring(2); // "llo"
    "Hello".substring(0, 2); // "He"
    "Hello".substring(2, 4); "ll"
    注意索引号是从0开始的。
    
    • 类型转换
    把任意基本类型或引用类型转换为字符串
    String.valueOf(123); // "123"
    String.valueOf(45.67); // "45.67"
    String.valueOf(true); // "true"
    String.valueOf(new Object()); // 类似java.lang.Object@636be97c
    把字符串转换为其他类型
    int n1 = Integer.parseInt("123"); // 123
    int n2 = Integer.parseInt("ff", 16); // 按十六进制转换,255
    把字符串转换为boolean类型
    boolean b1 = Boolean.parseBoolean("true"); // true
    boolean b2 = Boolean.parseBoolean("FALSE"); // false
    
    • 转换为char[]
      Stringchar[]类型可以互相转换,方法是:
    char[] cs = "Hello".toCharArray(); // String -> char[]
    String s = new String(cs); // char[] -> String
    
    • 字符编码
      1.早期的计算机系统中,使用美国国家标准学会制定了表示英文字母、数字和常用符号的ASCII编码,占用一个字节。
      2.后来汉字也纳入计算机编码,GB2312标准使用两个字节表示一个汉字,其中第一个字节的最高位始终为1,以便和ASCII编码区分开。
      3.为了统一全球所有语言的编码,全球统一码联盟发布了Unicode编码。
      4.我们经常使用的UTF-8又是什么编码呢?因为英文字符的Unicode编码高字节总是00,包含大量英文的文本会浪费空间,所以,出现了UTF-8编码,它是一种变长编码,用来把固定长度的Unicode编码变成1~4字节的变长编码。
      5.请始终牢记:JavaStringchar在内存中总是以Unicode编码表示。
    把字符串转换成其他编码
    byte[] b1 = "Hello".getBytes(); // 按ISO8859-1编码转换,不推荐
    byte[] b2 = "Hello".getBytes("UTF-8"); // 按UTF-8编码转换
    byte[] b2 = "Hello".getBytes("GBK"); // 按GBK编码转换
    byte[] b3 = "Hello".getBytes(StandardCharsets.UTF_8); // 按UTF-8编码转换
    把已知编码的byte[]转换为String
    byte[] b = ...
    String s1 = new String(b, "GBK"); // 按GBK转换
    String s2 = new String(b, StandardCharsets.UTF_8); // 按UTF-8转换
    

    相关文章

      网友评论

          本文标题:Java核心类-字符串和编码

          本文链接:https://www.haomeiwen.com/subject/quaxoctx.html