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

概述

Java API

String 和 StringBuilder

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

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

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

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

案例:


String s = "123";
String ss = s + "abc";
//ss = new StringBuilder(s)
//
.append("abc").toString();

案例:


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)

常见案例:

邮政编码的规则 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

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

案例:


//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

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


String str=
"1, 李洪鹤, 110, lihh@tedu.cn, 北京海淀区";
String[] data=str.split(",\s*");
// "1", "李洪鹤" ...
System.out.println(data[1]);

replaceAll

replace 替换


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方法:


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重写:


/**
* 一个有意义的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. 重写模板:

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;
}

==不能用于比较对象:

这里写图片描述

案例:


/**
* 测试 重写 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 Unit02 正则表达式 、 Object 、 包装类Java API所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部