Java字符串String类的各知识点及其方法进阶版

我们知道字符串是一个对象,String 不是基本类型,而是引用类型,是Java库中预定义的一个类。String类中有13个构造方法以及40多个处理字符串的方法。
一些最基本方法的在这篇博客有介绍,可以去查阅:熟练Java,这些基本类和函数一定要掌握

下面介绍进一步的Stirng类

一、构造一个字符串

可以用字符串直接量或字符数组创建一个字符串对象

  1. 用字符串直接量创建一个字符串对象
    语法:String newString = new String(stringLiteral);
    例如:String message = new String(’'Weicome to Java");
    又Java将字符串直接量看作String对象。所以,一般用下面的语句:
    String message = “WelcometoJava”;

  2. 用字符数组创建一个字符串。
    例如,下述语句构造一个字符串"GoodDay":
    char[] charArray = {‘C’,‘o’,‘o’,‘d’,’’,‘0’,‘a’,‘y’};
    String message = new String(charArray);

注意:

  • String变量存储的是对String对象的引用
  • String对象里存储的才是字符串的值。

严格地讲,术语String变量、String对象和字符串值是不同的。但在大多教情况下, 它们之间的区别是可以忽略的。为简单起见,术语字符串将经常被用于指String变量、 String对象和字符串的值。

二、不可变字符串与限定字符串

String对象是不可变的,一旦创建,它的内容是不能改变的;
对具有相同字符序列的字符串直接量使用同一个实例。这样的实例称为限定的(interned)字符串。

1.不可变字符串

看这个例子:下列代码会改变字符串的内容吗?

String s = "Java"; 
s ="HTML";

这个代码没有改变字符串s的内容,只是将s指向了另一个字符串对象

第一条语句创建了一个内容为"]ava "的String对象,并将其引用赋值给 S;
第二条语句创建了一个内容为"HTML"的新String对象,并将其引用赋值给s。
赋值后第一个String对象仍然存在,但是不能再访问它,因为变量s现在指向了新的对象。

在这里插入图片描述

2.限定字符串

因为字符串在程序设计中是不可变的,但同时又会频繁地使用,
所以Java虚拟机为了提高效率并节约内存,对具有相同字符序列的字符串直接量使用同一个实例。这样的实例称 为限定的(interned)字符串。
例如,下面的语句:
在这里插入图片描述

  • 程序结果显示:
    s1 == s2 is false ;
    s1 == s3 is true ;
  • 结果分析
    由于s1和s3指向相同的限定字符串"WelcometoJava",因此, sl == s3为true。
    但是,s1 == s2为false, 这是因为尽管s1和s2的内容相同,但它们是不 同的字符串对象。 (s2创建了一个新的字符串对象)

三、字符串的替换和分隔

String 类提供替换和分隔字符串的方法
在这里插入图片描述

不是说—旦创建了字符串,它的内容就不能改变,那这里是如何变化的?

这里方法 repalce、replaceFirst 和 replaceAll 会返回一个源自原始字符串的新字符串(并未改变原始字符串!) 。

正则表达式(regular expression)(缩写 regex)是一个字符串,用于描述匹配一个字符串集的模式。 可以通过指定某个模式来匹配、替换或分隔一个字符串。 这是一种非常有用且功能强大的特性。

四、字符串与数组之间的转换

字符串不是数组,但是字符串可以转换成数组,反之亦然

1.字符串-----> 字符数组,

1.String.toCharArray( ) 方法
例如,下述语句将字符串"]ava"转换成一个数组:
char[] chars = “Java”. toCharArray()

2. String . getChars(int srcBegin.int srcEnd,char[]dst,int dstBegin)
下标 从 srcBegin 到 srcEnd -1的子串复制到字符数组 dst 中下标从 dstBegin开始的位置.
举例在这里插入图片描述

2.字符数组----->字符串

  1. 构造方法 StMng(Char[])
    例如,下面的语句使用String 构造方法由一个数组构造一个字符串:
 String str = String.valueOf(new char[]{
    
    '3', 'a', 'v', 'a'});
  1. ** 方法String . value0f(char[]) **
    下面的语句使用 valueOf()方法由一个数组构造一个字符串:
 String str = String.valueOf(new char[]{
    
    '3', 'a', 'v', 'a'});

五、将字符和数值转换成字符串

  1. 可以使用Double.parseDouble(str)或者Integer.parselnt(str)将一个字符 串转换为一个double值或者一个int 值,
  2. 也可以使用字符串的连接操作符来将字符或者数字转换为字符串。
  3. 另外一种将数字转换为字符串的方法是使用重载的静态 valueOf() 方法。
    该方法可以用于将字符和数值转换成字符串,如下图所示:

在这里插入图片描述
例如为了将 double值 5.44转换成字符串,可以使用String.value0f(5.44) 。 返回值 是由字符‘5’ ,’ . ’ ‘4’ , ’ 4 '构成的字符串。

六、格式化字符串

String类包含静态 format 方法,它可以创建一个格式化的字符串。
调用该方法的语法是:
String.format(format,iteml,item2 itemk);

举例:
在这里插入图片描述

这个方法很像printf 方法,只是 format方法返回一个格式化的字符串,而printf 方法显示一个格式化的字符串。
因此:
System.out.printf(format, iteml, i t e m2, … ,itemk);
等价于
System.out.print( String,format(format, iteml, it e m2, … ,itemk));

另外Java还提高了一个类似String类的StringBuilder类
对其的介绍可参考此链接:Java字符串类StringBuilder的简单介绍及常用方法小结

猜你喜欢

转载自blog.csdn.net/qq_45768060/article/details/106490665