第 5 章

常用实用类
5.1 String 类
java. lang 包中的 String 类为 final 类,因此用户不能扩展 String 类,即 String 类不可以有子类。

5.1.1 构造 String 对象

String 常量是用双引号(英文输入法输入的双引号)括起的字符序列。

(括号中没有内容也合法)

(单引号括起来的是字符,字符常量!!!)
String s; s = new String("we are students");
s 中存放着引用, s 的实体是字符序列 we are students ,即 String 对象封装的是字符序列。

可以用一个已创建的 String 对象创建另一个 String 对象。
String tom = new String(s);


引用 String 常量

String 常量也是对象。 Java 把用户程序中的 String 常量放入常量池。 String 常量对象也有自己的引用和实体。

可以这样简单地理解常量池:常量池中的字符序列的“引用”在程序运行期间再也不允许改变。非常量池中的 String 对象的引用可以发生变化。

new构造出的对象的引用每次都是不同的,它是动态的

5.1.2 String 类的常用方法

1 public int length(String s)

使用 String 类中的 length() 方法可以获取一个 string 对象封装的字符序列的长度,即 String 对象的字符序列的长度。
2 public boolean equals(String s)

比较当前 String 对象的字符序列是否与参数 s 指定的 String 对象的字符序列相同。

相同返回true,反之返回false。

s1.equals(s2)是比较值,s1 == s2是比较引用/所在地址空间
所以两个 String 对象的值相等不一定代表引用相等,尽量不要使用 ==,使用equals()

3 public int compareTo(String s)

按字典序与参数的字符序列比较大小。

当前 String 对象的字符序列与 s 的字符序列相比,相同返回值 0,大于返回正值,否则返回负值。

4 public boolean contains(String S)

判断当前 string 对象的字符序列是否含有 s 的字符序列。

5 public int indexOf(String s)

从当前 String 对象的字符序列索引位置 0 开始检索,并返回 首次出现 s 的字符序列的位置。如果没有检索到 s 的字符序列,该方法返回的值是 -1 。
6 public String substring(int startpoint)

返回一个新的 String 对象,返回的 String 对象的字符序列是从当前 string 对象的字苻序列索引位置 startpoint 开始(包括位置 startpoint 上的字符) 截取到最后,所得到的字符序列。

6 public boolean startsWith(String s)、endsWith(String s)

判断当前 String 对象的字符序列 前/后缀 是否是参数 s 指定的 String 对象的字符序列
7 public boolean regionMatches(int first.Start , String other , int orthcrStart , int length)

从当前 String 对象的字符序列 firststart 位置开始,取长度为 length 的一个字符序列,并将这个字符序列和参数 other 的字符序列的一个子字符序列进行比较。

其中, other 的子字符序列是从参数 othertstart 指定的位置开始,取长度为 length 的一个子字符序列。如果两个子字符序列相同,该方法就返回 true ,否则返回 false。
8 public String trim()

一返回一个 String 对象,返回的 String 对象的字符序列 s 的字符序列去掉前后空格后所得到的字符序列。

5.1.3 String 对象与基本数据的相互转化

String 对象的字符序列转化为数字

public static int parselnt(String s)

该方法返回 int 型数据

如果参数 s 的字符序列中的字符有非“数字"字符,如" 1ab56 ",那么该方法在执行过程中会抛出 NumberFormatException 异常
数字转化为 String 对象

任何数字和 String 常量 “” 做并运算 “+” 都将得到一个 String 对象

String str = 3.14 + "";


String 类的类方法 public static String valueOf()
5.1.4 对象的 String 表示

所有的类都默认是 java.lang 包中 0bject 类的子类或间接子类。

Object 类有一个 public String toString() 方法,一个对象通过调用该方法可以返回一个 String 对象,称这个 string 对象是当前对象的 String 表示。
0bject 类的子类或间接子类也可以重写 toString() 方法。例如, java. util 包中的 Date 类就重写了 toString 方法,重写的方法返回时间的字符序列表示。

5.1.5 字符序列与字符、字节数组

字符数组

public void getChars( int start, int end, char c[], int offset )

将当前 String 对象的字符序列中的一部分字符复制到参数 c 指定的数组中,将 String 对象的字符序列中从索引位置 start 到 end- 1 位置上的字符复制到数组中,并从数组的 offset 处开始存放这些字符。

需要注意的是,必须保证数组 c 能容纳下要被复制的字符。

String 对象调用该方法,将它的字符序列依次存放在一个字符数组的单元中,并返回该数组的引用。
字节数组

String 类的构造方法 String(byte[]) 用指定的字节数组构造一个 String 对象。

String(byte[] , int offset , int length )

构造方法用指定的字节数组的一部分,即从数组起始位置 offset 开始取 length 个字节构造一个 String 对象。

public byte() getBytes()

String 对象调用该方法,将它的字符序列转换为平台的默认编码,将编码依次存放在 byte 数组的单元中,并返回 byte 数组的引用。


5.2 正则表达式
一个正则表达式是含有一些具有特殊意义字符的字符序列,这些特殊字符称作正则表达式中的元字符。

public boolean matches(String regex)

判断当前 String 对象的字符序列是否和参数 regex 指定的正则表达式相匹配,即是否和 regex 的字符序列相匹配。

如果一个 String 对象的字符序列和regex 的字符序列相匹配,就简称 String 对象的字符序列和 regex 相匹配。
在正则表达式中可以用中括号括起若干个字符来表示一个元字符,该元字符代表中括号中的任何一个字符。

例如 String regex =“ [159]ABC ”,那么“ 1ABC ”、“ 5ABC ”和“ 9ABC ”都和 regex 相匹配。

元字符功能
\转义字符
^正则表达式的开头
$正则表达式的结尾
*匹配0次或者多次
+匹配1次或者多次
匹配1次或者0次
.匹配任意字符
{n}匹配n次
[a-z]匹配范围从a-z
[xyz]匹配这三个其中一个
{n.}至少匹配n次
\D匹配非数字
\S匹配非空白


在正则表达式中可以使用限定修饰符。例如,对于限定修饰符“?",如果 X 代表正则表达式中的一个元字符或普通字符,那么“ X ?”就表示 X 出现 0 次或 1 次,例如:
String regex = "hello[2468]?";
那么 "hello ” "hello 2 ” "hello 4 ” "hello 6 ” "hello 8 ”都与 regex 相匹配。

(即出现0或1次都成立)
5.2.2 常用的正则表达式

匹配形如 整数 的正则表达式

String regex = "-?[1-9]\\\d + "; // -?表示0或1个-号,即正负性。[1~9]表示出现1~9,即首位不能为0。\\\d+表示数字任意排列。
限定为n位数,就将+改为{n-1}。

匹配形如 浮点数 的正则表达式

String regex = "-?[0-9][0-9]*[.][0-9]+";


5.2.3 字符序列的替换与分解

public String replaceAII( String regex, String replacement)

方法返回一个新的 S tring 对象,返回的 String 对象的字符序列是把当前 String 对象的字符序列中,所有和参数 regex 相匹配的子字符序列替换成参数 replacement 指定的字符序列所得到的字符序列。

5.5 Pattern 与 Matcher 类
模式匹配就是检索和指定模式匹配的字符序列。

Matcher 类的对象直接检索出和 Pattern 类的对象匹配的 String 对象。

Pattern 模式对象

使用正则表达式 regex 作为参数得到一个称为模式的 Pattern 类的实例 pattern。
模式对象 pattern 调用 matcher ( CharSequence input) 方法返回一个 Matcher 对象,称为匹配对象,参数 input 是 matcher 要检索的 String 对象。

之后,对象 matcher 就可以调用各种方法检索 input。

常用方法:

public boolean find()

matcher 依次调用 booelan find() 方法,检索 input 的字符序列中和 regex匹配的子字符序列。

int statrt() 和 int end()

得到 find() 方法检索到的字符序列的开始和结束位置。

String group()

matcher. group() 返回的 String 对象,该对象的字符序列是 find() 方法在 input 的字符序列中找到的匹配 regex 的子字符序列。


5.6 StringBuffer 类
String 类是 final 类,不提供修改字符序列的方注,也就是说, String 对象不能修改、删除、或替换字符序列中的某个字符,即 String 对象一旦创建,那么实体是不可以再发生变化的,称这样的对象是不可变对象。

StringBuffer 类

该类的对象的实体的内存空间可以自动的改变大小,便于存放一个可变的字符序列。

常用方法:

StringBuffer insert (int index , String str)

将参数 str 指定的字符列插入到参数 index 指定的位置,并返回当前对象的引用。

public StringBuffer reverse()

reverse() 方法将该对象实体中的字符翻转,并返回当前对象的引用。

StringBuffer delete(int startlndex , int endlndex)

StringBuffer replace( int startlndex , int endlndex , String str)


5.7 日期与时间
LocalDate 、 LocalDateTime 和 LocalTime 类的对象封装和日期、时间有关的数据(如年、月、日、时、分、秒、纳秒和星期等),这 3 个类都是 final 类,而且不提供修改数据的方法,即这些类的对象的实体是不可再发生变化的,属于不可变对象(和 String 类似)。

LocalDate

LocalDate 调用 now() 方法可以返回一个 LocalDate 对象,该对象封装本地当前日期有关的数据(年、月、日、星期等)。

LocaIDateTime

LocaIDateTime 相对 LocalDate 类, LocalDateTime 类的对象中还可以封装时、分、秒和纳秒( 1 纳秒是 1秒的 10 亿分之一)等时间数据。

LocaITime

相对 LocalDateTime 类的对象, LocalTime 只封装时、分、秒和纳秒等时间数据。

5.8 Math 、 BigInteger 和 Random 类
5.8.1 Math 类

java. lang包中的 Math 类包含许多用来进行科学计算的类方法,这些方法可以直接通过类名调用。

方法功能
abs(double a)计算a的绝对值
sqrt(double a)计算方根
cell(double a)计算大于a 的最小帧数
floor(double a)计算小于a 的最小帧数
round(double a)计算a四舍五入之后的值
max(double a,double b)比大
max(double a,double b)比小
random()生成一个大于0.0小于1.0的随机值
pow(double a,double b)a的b次幂

9.8.2 Biglnteger类

程序有时需要处理大整数, java.math 包中的 Biglnteger 类提供任意精度的整数运算。

可以使用构造方法,构造一个十进制的 BigInteger 对象。

5.8.3 Random 类

可以在指定的取值范围内产生随机的数字

方法声明功能
Random()创建一个伪随机数生成器
Random(long seed)使用long型的seed创建伪随机数生成器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值