Java初学之字符串

Java初学之字符串

从概念上讲, Java字符串就是Unicode字符序列。例如,串Java\u2122由5 个
Unicode 字符J、a、v、a 和™

Java 没有内置的字符串类型, 而是在标准Java 类库中提供了一个预定义类, 很自然地叫做String。每个用双引号括起来的字符串都是String 类的一个实
例:

String e = ""; // 空字符串
String greeting = "Hello";

子串

String类的substring方法可以从一个较大的字符串提取出一个子串

String greeting = "Hello";
String s = greeting.substring(0, 3); //Hel
  • 左开右闭

拼接

使用+号就行拼接

  • 字符串和字符串拼接

    String greeting = "Hello";
    String thing = "world";
    String first_sen = greeting + thing; //Helloworld
    
  • 字符串和非字符进行拼接

    int num  = 5;
    String thing = "world";
    String first_sen = num + thing; //5world
    
    • 通常用在输出语句中

      System.out.println("The answer is " + answer) ;
      
  • 采用String.join可使用分隔符分割

    String all = String.join(" / ", "S", "M", "L", "XL"); // 结果为S / M / L / XL
    

不可变字符串

在Java 文档中将String类对象称为不可变字符串

检测字符串是否相等

可以使用equals方法检测两个字符串是否相等

s.equals(t)
  • 不区分大小写,判断字符串是否相等,使用equalsIgnoreCase

  • 一定不要使用==运算符检测两个字符串是否相等! 这个运算符只能够确定两个字串是否放置在同一个位置上

空串和Null串

空串"" 是长度为0的字符串,可以调用以下代码检查一个字符串是否为空:

if (str.length() == 0)
// 或者
if (str.equals(""))
  • 空串是一个Java 对象, 有自己的串长度( 0 ) 和内容(空)。

String变量还可以存放一个特殊的值,名为null ,这表示目前没有任何对象与该变量关联,要检查一个字符串是否为null , 要使用以下条件:

if (str == null)
  • 如果需要检查一个字符串既不是null 也不为空串,这种情况下就需要使用以下条件:

    if (str != null && str.length() != 0)
    
    • 首先要检查str不为null。如果在一个null值上调用方法,会出现错误。

码点与代码单元

  • Java 字符串由char值序列组成。

  • char 数据类型是一个采用UTF-16 编码表示Unicode 码点的代码单元。

  • 大多数的常用Unicode 字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。

  • length方法将返回采用UTF-16 编码表示的给定字符串所需要的代码单元数量。

    String greeting = "Hello";
    int n = greeting.length(); // is 5
    
  • 要想得到实际的长度,即码点数量,可以调用:

    int cpCount = greeting.codePointCount(0, greeting.length()); // 5
    
  • 调用s.charAt(n)将返回位置n的代码单元,n 介于0 ~ s.length()-1之间。例如:

    char first = greeting.charAt(0); // first is 'H'
    char last = greeting.charAt(4) ; // last is ’o’
    
  • 要想得到第i 个码点,应该使用下列语句

    int index = greeting.offsetByCodePoints(0, 2);
    int cp = greeting.codePointAt(index) ; //108
    

String API

API 说明
char charAt(int index)

待续更新

构建字符串

有些时候, 需要由较短的字符串构建字符串, 例如, 按键或来自文件中的单词。采用字符串连接的方式达到此目的效率比较低。每次连接字符串,都会构建一个新的String对象,既耗时,又浪费空间。使用StringBuilder类就可以避免这个问题的发生。

如果需要用许多小段的字符串构建一个字符串, 那么应该按照下列步骤进行。首先, 构建一个空的字符串构建器:

StringBuilder builder = new StringBuilder();

当每次需要添加一部分内容时, 就调用append方法。

builder.append('a'); // appends a single character
builder.append("hahaha"); // appends a string

在需要构建字符串时就凋用toString方法, 将可以得到一个String对象, 其中包含了构建器中的字符序列。

String completedString = builder.toString(); // ahahaha
  • 重要的API

    • StringBuilder()

      构造一个空的字符串构建器。

    • int length()
      返回构建器或缓冲器中的代码单元数量。

    • StringBuilder append(String str)
      追加一个字符串并返回this。

    • StringBuilder append(char c)
      追加一个代码单元并返回this。

    • StringBuilder appendCodePoint(int cp)
      追加一个代码点,并将其转换为一个或两个代码单元并返回this。

    • void setCharAt(int i ,char c)
      将第i 个代码单元设置为c。

    • StringBuilder insert(int offset,String str)
      在offset位置插入一个字符串并返回this。

    • StringBuilder insert(int offset,Char c)
      在offset 位置插入一个代码单元并返回this。

    • StringBuilder delete(int startIndex,int endIndex)
      删除偏移量从startIndex到-endIndex-1 的代码单元并返回this。

    • String toString()
      返回一个与构建器或缓冲器内容相同的字符串

posted @ 2022-02-17 21:04  zlbingo  阅读(45)  评论(0)    收藏  举报