Javase | String字符串 - 2

字符串

  • Java字符串就是Unicode ( 统一码 )字符序列。

    例如:

    字符串 “Java\u2122” 是由5个Unicode字符 J、a、v、a和 (商标)TM组成。
    \u2122是 Unicode 转义序列,在Unicode中,\u后跟四个16进制数字,表示一个Unicode字符,\u2122 表示 “™”(商标符号)。

  • Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,就叫String。每个用双引号括起来的字符串都是String类类型。

    例如:

    String s = ""; //空字符串
    String str ="HelloWorld";
    

子串:

用substring方法在字符串中提取子串

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

    例如:

    String str ="HelloWorld";
    String s =str.substring(0);   //创建了一个由字符“HelloWorld”组成的字符串。
    //创建了一个由字符“Hello”组成的字符串。(第一个字符的索引为0)
    String s2 =str.substring(0,5);   
    
  • subsString()方法的优点:容易计算子串的长度。subsString(a,b)的长度为 b-a。例如:子串“hello”的长度为: 5-0=5。

substring( )方法的两种重载形式

  • 拓展:substring( )方法的两种重载形式:
    • 1.substring(int beginIndex ) :
      从指定索引开始,截取包括执行索引在内的后面的所有哦字符,并返回一个新的字符串。
    • 2.substring(int beginIndex , int endIndex) :
      从指定的开始索引( beginIndex) 到结束索引( endIndex )之间(不包括结束索引),截取对应的字符,并返回一个新的字符串。

拼接:

用 + 号连接 ( 拼接) 两个字符串

  • Java语言允许使用 + 号连接 ( 拼接) 两个字符串。

    例如:

    String example = "interesting";
    String example2 = "things";
    String Infomation = example+" "+example2;
    System.out.println(Infomation); //interesting things
    
  • 当将一个字符串与一个非字符串进行拼接时,后者会自动转换为字符串。这种特性通常出现在输出语句中。

    例如:

    int age =20;
    String str="NL" + age;  //NL20
    

用静态join方法将多个字符串进行存放且分隔

  • 如果想要将多个字符串放在一起,用一个界定符分隔,可以用静态join方法。

    例如:

    //用 / 将SMLXL分隔开
    String all = String.join("/","S","M","L","XL");
    System.out.println(all);  // S/M/L/XL
    

用repeat方法复制/重复字符串

  • Java11中,提供了一个复制/重复字符串的repeat( )方法。

    例如:

    String repeated = "Java".repeat(3); // "Java"
    System.out.println(repeated); // JavaJavaJava
    

不可变字符串:

修改字符串中某个字符的方法

  • String类中没有提供修改字符串中某个字符的方法。String str =“Hello”; 如果希望将str中的内容修改为“Help!”,不能直接将最后两个位置的字符改为‘p’和‘!’。 此时可通过:提取想要保留的子串,再与希望替换的子串拼接。

    例如:

    String str = "Hello";
    str = str.substring(0, 3)+"p!"; // “Help!”
    System.out.println(str); // Help!
    
  • 由于不能修改Java字符串中的单个字符,所以Java将String类对象称是 : 不可变的。如同数字3就永远是数字3一样,字符串“Hello”永远包含字符H、e、l、l、o,我们不能修改这些值。但可让一个字符串引用另一个字符串,好比:String str = “Hello”; 这时可让str直接=“Help!”。

检测字符串是否相等:

区分大小写检测字符串是否相等

  • 可以使用equals方法检测两个字符串是否相等。如果两个字符串相等则返回true,否则返回false。

  • 进行比较的两者可以是字符串变量,也可以字符串字面量。

    例如:

    String color = "red";
    color.equals(color);//true
    "Hello".equals(color);//false
    

不区分大小写检测字符串是否相等

  • 如果想要不区分大小写的检测两个字符串是否相当,可以使用equalsIgnoreCase方法。

    例如:

    "Hello".equalsIgnoreCase("hello");
    

不要使用 == 运算符判断两个字符串是否相等

  • 不要使用 == 运算符判断两个字符串是否相等。这个运算符只能确定两个字符串是否存放在同一个位置上。当然,如果字符串存放在同一个位置上,他们必然相等。

    但是,完全有可能将内容相等的多个字符串副本放置的在不同的位置上。如果虚拟机始终将相同的子串共享,那就可用 == 检测两个字符串是否相等。

空串与Null串( null ) :

空串

  • 空串是长度为0的字符串。可以用以下代码判断一个字符串是否为空串:

    if(str.length()==0){
           
            //长度为0,自然是空串
        //为空串
    }else{
           
           
        //不为空串
    }
                
    if(str.equals("")){
           
            //字符串等于空串自然也是: 空串  
         //为空串
    }else{
           
           
         //不为空串
    }
    
  • 空格字符长度为1,要与空串( 空字符串) 区分开来。

  • 空串是一个Java对象,有自己的串长度(0) 和内容(空)。

Null串 (null)

  • String变量还可以存放一个特殊的值,名为null,表示目前没有任何对象与该变量关联。

  • 检查一个字符串是否为空串:

    If(str = null){
           
           
        //为空串
    }else{
           
           
        //不为空串
    }
    
  • 检查一个字符串既不是null也不是空串:

    //首先要检查str不为null,如果在一个null值上调用方法,会报错
    If(str!=null&&str.length()!=0){
           
            
      //该字符串不为null也不为空串
    }
    

String类中常用方法 (String API)

Java中的String类包含了50多个方法。下面列举一些常用的String类的方法:

  • char charAt (int index)

    返回指定位置的代码单元。

  • int codePointAt (int dex)

    返回从指定位置开始的码点。

  • int offsetByCodePoints (int startIndex,int cpCount)

    返回从startIndex码点开始,cpCount个码点后的码点索引。

  • int compareTo (String other)

    按照字典顺序,如果字符串位于other之前,返回一个负数; 如果字符串位于other之后,返回一个正数; 如果 两个字符串相等,返回0。

  • IntStream codePoints()

用这个字符串的码点作为一个流返回。调用toArray将它们放在一个数组中。

  • new String(int [] codePoints,int offset,int count)

用数组中从offset开始的count个码点构建一个字符串。

  • boolean empty()

  • boolean blank()

如果字符串为空或由空格组成,返回true

  • boolean equals(Object other)

如果字符串与other相等,返回true

  • boolean equalsIgnoreCase(Object other)

如果字符串与other相等(忽略大小写),返回true

  • boolean startsWith(String prefix)

  • boolean endWith (String suffix)

如果字符串以prefix开够或以suffix或结尾,则返回true。

  • int indexOf (String str)

  • int indexOf (String str,int fromIndex)

  • int indexOf (int cp)

  • int indexOf (int cp,int fromIndex)

返回与字符串Str或码点cp匹配的第一个子串的开始位置。从索引0或fromIndex开始匹配。如果在原始字符串中不存在str,则返回-1。

  • int lastIndexOf (String str)

  • int lastIndexOf (String str,int fromIndex)

  • int lastindexOf (int cp)

  • int lastindexOf (int cp,int fromIndex)

返回与字符串Str或码点cp匹配的最后一个子串的开始位置。从原始字符串末尾或fromIndex开始匹配。

  • int length( )

返回字符串代码单元的个数。

  • int codePointCount(int startIndex,int endIndex)

返回startIndex 和 endIndex-1之间的码点个数。

  • String replace (CharSequence oldString,CharSequence newString)

返回一个字符串,这个字符串用newString代代原始字符串中所有的oldString。可以用String或StringBuilder对象作为CharSequence参数。

  • String substring( int beginIndex)

返回一个字符串,包含从beginIndex到字符串末尾的所有字符。

  • String substring( int beginIndex,int endIndex)

返回一个字符串,包含从beginIndex到endIndex-1的所有字符。

  • String toLowerCase( )

将原始字符串中的大写字母改为小写字母。

  • String toUpperCase( )

将原始字符中的所有小写字符改成大写字符。

  • String trim( )

  • String strip( )

这个字符串将删除原始字符串头部和尾部小于等于U+0020的字符(trim) 或空格(strip)。

  • String join(CharSequence delimiter ,CharSequence… elements)

用给定的定界符连接所有元素。

  • String repeat( int count)

将当前字符串重复/复制count次。

查看StringAPI文档

  • 可以从Oracle下载API文档,并保存到本地。
  • 也可在浏览器中访问:https://docs.oracle.com/javase/9/docs/api

构建字符串 (StringBuffer):

有些时候,需要较短的字符串构建字符串,如:按键或来自文件中的单词。如果采用字符串拼接的方式来达到这个目的,效率会比较低。每次拼接字符串时候,都会构建一个新的String对象,既耗时,又耗费空间。使用StringBuilder可以解决这个问题。

用许多小段的字符串来构建一个字符串

		String ch = "Hello";
     String str = "World";
     String str2 = "...";

     //构建一个空的 字符串构建器
     StringBuilder builder = new StringBuilder();
     //当每次需要添加一部分内容时,就调用append方法
     builder.append(ch);
     builder.append(str);
     builder.append(str2);
//当字符串构建完成时就调用toString方法,将可以得到一个String对象,其中包含了构造器中的字符序列。
     String completeString = builder.toString(); //HelloWorld...

StringBuffer类中常用的重要方法:

  • 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)

    在offet位置插入一个字符串并返回this

  • StringBuilder insert(int offset .char c)

    在offet位置插入一个字代码单元并返回this

  • StringBuilder delete(int startIndex ,int endIndex)

    删除偏移量从startIndex 到startIndex -1的代码单元并返回this

  • String toString()

    返回一个与构建器或缓冲器内容相同的字符串。

猜你喜欢

转载自blog.csdn.net/m0_70720417/article/details/132178934
今日推荐