《Java从入门到失业》第四章:类和对象(4.2):String类

时间:2023-03-09 07:14:39
《Java从入门到失业》第四章:类和对象(4.2):String类

4.2String类

这一节,我们学习第一个类:String类。String翻译成汉语就是“字符串”,是字符的序列。我们知道,在Java中,默认采用Unicode字符集,因此字符串就是Unicode字符的序列。例如字符串“Java大失叔”,就是由7个Unicode字符‘J’、‘a’、‘v’、‘a’、‘大’、‘失’、‘叔’组成。在JDK中,把字符串抽象成一个类String提供给我们使用。String类在java.lang包中。

4.2.1构造String对象

  上面我们说了,想看电视得先买一台电视,电视在出厂的时候厂家会初始化它的状态。想使用String类,得先得到一个String的对象,然后指定属性的初始状态,然后才能使用它。得到对象的过程,叫做构造对象。在Java中,我们用构造器(constructor)来构造实例,构造器其实是一种特殊的方法,用来构造并初始化对象。我们采用在构造器前面加上new关键字来实现,例如:

new 构造器();

我们查看String类的API文档(怎么查这里不再赘述),构造方法截图如下:

《Java从入门到失业》第四章:类和对象(4.2):String类

发现String类的构造方法有几个特点:

  • 足足有15个构造方法
  • 有的方法上标有Deprecated,这个标签的含义是不推荐使用,将来在新版本中可能会移除
  • 构造方法的名字和类名相同

构造方法的名字和类名相同,这是Java构造器的特点,也是规定。我们挑选其中一个构造方法:String(char[] value)

我们看到,这其实就是用一个char数组来构造一个字符串,那么首先我们得有一个char数组才行,例如我们想要得到一个字符串“Java大失叔,你真棒”。那么代码如下:

char[] a = { 'J', 'a', 'v', 'a', '大', '失', '叔', ',', '你', '真', '棒' };
String s = new String(a);
System.out.println(s);// 结果输出:Java大失叔,你真棒

事实上,由于String太常用了,Java给我们提供了更加简便的构造方法,直接用双引号将一段字符序列包起来,就得到了一个String的实例:

String s = "Java大失叔,你真棒";  

OK,我们得到了一个String对象了,下面我们来使用这个对象。我们可以看到,API中有几十个方法,我们挑选一些常用的演示一下。

4.2.2代码点和代码单元

首先,我们回忆一下关于char和Unicode的知识。Unicode定义了U+0000到U+10FFFF一共1114112个码位(code point),英文直译为代码点。一个代码点表示一个字符。char是用来存放UTF-16编码中的一个代码单元(code unit),即2个字节。平面0的代码点用一个代码单元即一个char就可以表示,其余的代码点需要用2个代码单元即2个char才能表示。

我们知道Stirng是Unicode字符的序列,但是底层的实现实际上是用char构成的。String类提供了一些关于代码点和代码单元相关的方法,请看下面摘抄的几个方法:

修饰和类型

方法

描述

int

length()

返回字符串的长度

int

codePointCount(int beginIndex, int endIndex)

返回beginIndex和endIndex-1之间的代码点的数量。

char

charAt(int index)

返回index索引处的char

int

codePointAt(int index)

返回index索引处的代码点

我们想获得字符的数量(即代码点的数量),需要用codePointCount方法,而length方法返回的是char的数量(即代码单元的数量)。调用对象的方法很简单,用如下形式:

对象.方法();

代码示例如下:

String s = "大失叔喜欢打麻将