Java中String类的部分方法说明

Java中用于处理字符串常量的有三个类:

java.lang.Stirng

java.lang.StringBuilder

java.lang.lang.StringBuilder

本文先介绍String类。

String类表示字符串。Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例。

字符串是不变的; 它们的值在创建后无法更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,所以可以共享它们(如果两个字符串的内容相同,则采用同一块内存地址)。

举例:

1
2
3
4
5
6
7
ini复制代码public class Test01 {
  public static void main(String[] args) {
      String text1 = "123465";
      String text2 = "123465";
      System.out.println(text1 == text2);
  }
}

结果为:true

==比较的是内存地址。

如果是new出来的 ,那一定是不同的内存地址。

举例:

1
2
3
4
5
6
7
typescript复制代码public class Test01 {
  public static void main(String[] args) {
      String text1 = "123465";
      String text2 = new String("123456");
      System.out.println(text1 == text2);
  }
}

结果为:false

  1. charAt(int index)

返回指定索引处的 char值。

1
2
3
4
5
6
typescript复制代码public class Test01 {
  public static void main(String[] args) {
      String text1 = "123465";
      System.out.println(text1.charAt(2));
  }
}

结果为:3

  1. codePointAt(int index)

返回指定索引处的字符(Unicode代码点)。

1
2
3
4
5
6
typescript复制代码public class Test01 {
  public static void main(String[] args) {
      String text1 = "abcdefg";
      System.out.println(text1.codePointAt(2));
  }
}

结果为:99

  1. compareTo(String anotherString)

简单来说,String类的compareTo()方法是用来比较两个字符串的字典顺序。   用字符串1跟字符串2作比较,如果字符串1的字典顺序在字符串2前面,则返回一个负数。若在后面,则返回一个正数。若两个字符串的字典顺序相同,则返回0。   这里的字典顺序指的是ASCII码表中的字符顺序。ASCII表中每个字符都有对应的下标,从0开始升序排列,共128个字符。

1
2
3
4
5
6
7
8
9
10
typescript复制代码public class Test01 {
  public static void main(String[] args) {
      String text1 = "abcdefg";
      String text2 = "AaBbCcdD";
      //字符串1的第一个字符跟字符串2的第一个字符不相等,
      // 则两个字符串都按照第一个字符的ASCII码顺序进行比较,
      // 其他字符都不用看,并返回一个整型。
      System.out.println(text1.compareTo(text2));
  }
}

结果为:32

a的ASCII码为97,A的ASCII码为65,两者相差32.

  1. equals(Object anObject)

将此字符串与指定的对象进行比较,当且仅当参数不是null且是String对象表示与此对象相同的字符序列时,结果为true。

1
2
3
4
5
6
7
typescript复制代码public class Test01 {
  public static void main(String[] args) {
      String text1 = "abcdefg";
      String text2 = "AaBbCcdD";
      System.out.println(text1.equals(text2));
  }
}

结果为:false

  1. getBytes(Object anObject)

使用给定的charset将此String编码为字节序列,将结果存储到新的字节数组中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
arduino复制代码public class Test01 {
  public static void main(String[] args) {
      String a = "11 ";
      String b = "好";
      byte[] arr;
      arr = a.getBytes();
      for (byte x : arr){
          System.out.print("x= " + x);
      }
      System.out.println();
      for (byte y : arr){
          System.out.print("y= " + y);
      }
  }
}

结果为:x= 49x= 49x= 32 y= -28y= -67y= -96

1的ASCLL码为49,空格是32 。

这里声明了一个byte类型的数组array用来接受getBytes()方法返回类的字节数组。 发现 字符串 “好”转换成字节之后 数组array里面有两个元素 ,一个 -28,一个 -67,这是因为,字符“你”是一个中文字符,占用了两个字节,当将其转换为byte时高8位转换成一个字节显示为-28 , 低8位转换成一个字节显示为 -67 。

  1. indexOf(int ch)

返回指定字符第一次出现的字符串中的索引。

1
2
3
4
5
6
typescript复制代码public class Test01 {
  public static void main(String[] args) {
      String a = "abcdef ";
      System.out.println(a.indexOf("d"));
  }
}

结果为:3

  1. repeat(int count)

返回一个字符串,其值为此字符串的串联重复 count次。

1
2
3
4
5
6
typescript复制代码public class Test01 {
  public static void main(String[] args) {
      String a = "abcdefabddffe ";
      System.out.println(a.repeat(2));
  }
}

结果为:abcdefabddffe abcdefabddffe

  1. replace(char oldChar,char newChar)

返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar

1
2
3
4
5
6
typescript复制代码public class Test01 {
  public static void main(String[] args) {
      String a = "abcdefabddffe ";
      System.out.println(a.replace("a","1"));
  }
}

结果为:1bcdef1bddffe

  1. split(String regex)

将此字符串拆分为给定 regular expression的匹配

1
2
3
4
5
6
7
8
9
ini复制代码public class Test01 {
  public static void main(String[] args) {
      String a = "ab cde fab dd ffe ";
      String[] arr = a.split(" ");
      for (int i = 0; i < arr.length; i++) {
          System.out.println(arr[i]);
      }
  }
}

结果为:

ab cde fab dd ffe

  1. subSequence(int beginIndex.int endIndex)

返回作为此序列的子序列的字符序列。

1
2
3
4
5
6
typescript复制代码public class Test01 {
public static void main(String[] args) {
String a = "ab cde fab dd ffe ";
System.out.println(a.subSequence(0,5));
}
}

结果为:ab cd

12.toLowerCase( )

使用默认语言环境的规则将此 String所有字符转换为小写。

1
2
3
4
5
6
typescript复制代码public class Test01 {
public static void main(String[] args) {
String a = "ABCdefG ";
System.out.println(a.toLowerCase());
}
}

结果为:abcdefg

13.trim( )

返回一个字符串,其值为此字符串,删除了所有前导和尾随空格,其中space被定义为其代码点小于或等于 'U+0020' (空格字符)的任何字符。

1
2
3
4
5
6
typescript复制代码public class Test01 {
public static void main(String[] args) {
String a = " avdfds ";
System.out.println(a.trim());
}
}

结果为:avdfds

14.valueOf(int i )

image-20211119131548590

1
2
3
4
5
6
arduino复制代码public class Test01 {
public static void main(String[] args) {
byte b = 32;
System.out.println(String.valueOf(b));
}
}

结果为:10

这个10是字符类型的

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%