我是靠谱客的博主 勤劳小刺猬,这篇文章主要介绍SE01 Unit02 正则表达式 、 Object 、 包装类Java API,现在分享给大家,希望可以做个参考。

Java API

String 和 StringBuilder

String是不变字符串: 对象不可改变,对象中的字符数组中的数据不可改变。

StringBuilder是可变字符串:对象封装的字符数组中的数据可以改变。

StringBuilder类型的操作性能好于Srting,字符串操作建议使用StringBuilder。 字符串显示使用String。

运行期间字符串连接计算利用StringBuilder的append完成。

案例:

复制代码
1
2
3
4
5
6
String s = "123"; String ss = s + "abc"; //ss = new StringBuilder(s) // .append("abc").toString();

案例:

复制代码
1
2
3
4
5
6
7
8
9
String s = "123"+"456"+"abc"; String ss = "123"; String str = ss + "456"+"abc"; //在一个表达式中出现连续的字符串连接,Java会 //自动的优化为一个StringBuilder对象 //String str = new StringBuilder(ss) // .append("456").append("abc").toString();

在工作中一个表达式中的连续字符串连接不需要优化为StringBuilder

在反复进行字符串连接时候建议使用StringBuilder

正则表达式

用于声明字符串的规则表达式。

经常用于检测一个字符串是否符合特定规则。

语法:

  1. 字符集合:
    • [abcd] abcd四个字符选一个
    • [a-f] a到f字符选一个
    • [^abcd] 除了abcd字符的其他字符
    • 缩写版
      • . 任意字符
      • d 数字
      • D 非数字
      • w 单词字符
      • W 非单词字符
      • s 空白
      • S 非空白
  2. 数量词
    • X{n} n个X
    • X{n,m} n到m个
    • X{n, } 最少n个
    • ? {0,1}
      • {0,}
      • {1,}
  3. 分组
    • (序列1|序列2)

常见案例:

复制代码
1
2
3
4
5
6
7
8
邮政编码的规则 d{6} 身份证的规则 d{17}[dXx] 用户名的规则: 8到11个单词字符 w{8,11} 检查一个文件是否为jpeg照片文件: .+.jpe?g 检查一个文件是否为照片文件: .+.(jpe?g|png|gif) Excel能够支持的文件名规则 : .+.xls[xbm]? 手机号的规则: (0086|+86)?s*1d{10}

String 正则API

matches

用于检测一个字符串整体是否符合指定的正则规则。

案例:

复制代码
1
2
3
4
5
6
7
8
9
10
//String reg=".+\.jpe?g"; String reg=".+\.(jpe?g|png|gif)"; //正则表达式: .+.(jpe?g|png|gif) //Java 字符串: .+\.(jpe?g|png|gif) String file = "她.png"; System.out.println(reg); boolean b = file.matches(reg); System.out.println(b);

split

按照一定规则将字符串劈开

复制代码
1
2
3
4
5
6
String str= "1, 李洪鹤, 110, lihh@tedu.cn, 北京海淀区"; String[] data=str.split(",\s*"); // "1", "李洪鹤" ... System.out.println(data[1]);

replaceAll

replace 替换

复制代码
1
2
3
4
5
String str = "那一年,我去你家,你说我去!" String reg = "我去"; String s = str.replaceAll(reg, "XXX"); System.out.println(s);

Object 类

  • 在Java类继承结构中,java.lang.Object类位于顶端;
  • 如果定义一个Java类时没有使用extends关键字声明其父类,则其父类默认为 java.lang.Object 类;
  • Object类型的引用变量可以指向任何类型对象。
  • Java 设计者将子类中必须有的方法都定义在Object类中
    • toString
    • equals

toString方法

关于Object 的toString方法:

  1. 返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。
  2. 建议所有子类都重写此方法。
  3. Object默认的toString方法返回值是
    • 类名@散列码
    • 这个默认方法是没有实际意义的结果,所以建议重写此方法。
  4. 由于很多Java API会自动调用toStirng方法,所以重写toString方法可以简化软件的开发调试。
    • 重写时候一般返回对象关键数据。

案例重写toString方法:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Demo11 { public static void main(String[] args) { Foo foo = new Foo(); //调用Object提供的默认toString方法 //返回一个字符串,意义不大 String str = foo.toString(); System.out.println(str); //调用重写的toString()方法 Goo goo = new Goo(); String s = goo.toString(); System.out.println(s); //toString的用途:println 等 //很多API会自动的调用toString //可以简化软件的开发和测试 System.out.println(goo); } } class Foo /*extends Object*/{ } class Goo{ //重新继承与Object类的toString(); public String toString(){ return "Hello World!"; } }

案例, 一个有意义的toString重写:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/** * 一个有意义的toString重写案例 */ public class Demo12 { public static void main(String[] args) { Airplane a1 = new Airplane(5, 7); a1.move(); a1.move(); a1.move(); //System.out.println(a1.x+","+a1.y); System.out.println(a1); a1.move(); a1.move(); a1.move(); //System.out.println(a1.x+","+a1.y); System.out.println(a1); } } class Airplane{ int x, y; public Airplane(int x, int y) { this.x = x; this.y = y; } public void move(){ x++; y+=2; } //重写toString方法后可以简化调试程序 //在程序中使用 System.out.println(plane); //即可输出对象的数据值 public String toString() { return x+","+y; } }

equals

  1. == 不能比较两个对象是否相等
  2. Java 在Object提供了equals方法,用于比较两个对象是否相等
    • equals默认的方法还是采用 == 比较,默认方法方法不能用于比较两个对象是否相等。
    • Java建议重写equals方法实现对象的相等比较
  3. 如何重写?按照对象的关键属性比较两个对象是否相等。
  4. 重写模板:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public boolean equals(Object obj){ //当两个对象的x和y都相等时候则相等 if(obj==null) return false; if(this==obj) return true; //使用if语句保护,避免造型异常 if(obj instanceof PointX){ //为了读取x y属性必须造型为子类型 PointX other=(PointX)obj; return this.x == other.x && this.y == other.y; } //方法一定返回一个boolean值! return false; }

==不能用于比较对象:

这里写图片描述

案例:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/** * 测试 重写 equals 方法 * */ public class Demo13 { public static void main(String[] args) { Point p1 = new Point(3, 4); Point p2 = new Point(5, 6); Point p3 = new Point(3, 4); Point p4 = p1; //p1和p3引用的对象逻辑上是相等的! //但是==比较不能反映这个“相等”结果 //== 只能用于比较两个变量相等 //不能用于比较两个对象是否相等 System.out.println(p1==p3);//false System.out.println(p1==p4);//true //默认的equals方法也不能对象相等 //必须重新才行!!! System.out.println(p1.equals(p3)); System.out.println(p1.equals(p4)); PointX p5 = new PointX(3, 4); PointX p6 = new PointX(3, 4); System.out.println(p5.equals(p6));//true System.out.println(p5.equals(null)); } } class Point{ int x, y; public Point(int x, int y) { this.x = x; this.y = y; } public String toString() { return x+","+y; } } class PointX{ int x, y; public PointX(int x, int y) { this.x = x; this.y = y; } public String toString() { return x+","+y; } //重写equals方法比较两个对象是否相等 public boolean equals(Object obj){ //当两个对象的x和y都相等时候则相等 if(obj==null) return false; if(this==obj) return true; //使用if语句保护,避免造型异常 if(obj instanceof PointX){ //为了读取x y属性必须造型为子类型 PointX other=(PointX)obj; return this.x == other.x && this.y == other.y; } //方法一定返回一个boolean值! return false; } }

最后

以上就是勤劳小刺猬最近收集整理的关于SE01 Unit02 正则表达式 、 Object 、 包装类Java API的全部内容,更多相关SE01内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(107)

评论列表共有 0 条评论

立即
投稿
返回
顶部