当前位置 : 主页 > 编程语言 > java >

Java object类及正则表达式原理解析

来源:互联网 收集:自由互联 发布时间:2021-04-30
equals方法 equals方法,用于比较两个对象是否相同 /* 描述人这个类,并定义功能根据年龄判断是否是同龄人 由于要根据指定类的属性进行比较,这时只要覆盖Object中的equals方法 在方法体

equals方法

equals方法,用于比较两个对象是否相同

/*
   描述人这个类,并定义功能根据年龄判断是否是同龄人
   由于要根据指定类的属性进行比较,这时只要覆盖Object中的equals方法
   在方法体中根据类的属性值进行比较
 */
class Person extends Object{
  int age ;
  //复写父类的equals方法,实现自己的比较方式
  public boolean equals(Object obj) {
    //判断当前调用equals方法的对象和传递进来的对象是否是同一个
    if(this == obj){
      return true;
    }
    //判断传递进来的对象是否是Person类型
    if(!(obj instanceof Person)){
      return false;
    }
    //将obj向下转型为Perosn引用,访问其属性
    Person p = (Person)obj;
    return this.age == p.age;
  }
}

toString方法

toString方法返回该对象的字符串表示

public class Demo01 {
  public static void main(String[] args) {
    Person p=new Person("小红帽",18);
    //调用父类的toString()
    System.out.println(p.toString());
    System.out.println(p);
  }
}

String类

字符串的本质是一个字符的数组。

构造方法

String s1 = new String(); //创建String对象,字符串中没有内容
  
  byte[] bys = new byte[]{97,98,99,100};
  String s2 = new String(bys); // 创建String对象,把数组元素作为字符串的内容
  String s3 = new String(bys, 1, 3); //创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数length为要几个元素
  
  char[] chs = new char[]{'a','b','c','d','e'};
  String s4 = new String(chs); //创建String对象,把数组元素作为字符串的内容
  String s5 = new String(chs, 0, 3);//创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数count为要几个元素

  String s6 = new String(“abc”); //创建String对象,字符串内容为abc

String类的方法查找

字符串缓冲区

查阅StringBuffer的API,StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

StringBuffer的方法使用

对象的方法链式调用

创建一个字符串缓冲区对象。用于存储数据。
StringBuffer sb = new StringBuffer();
添加数据。不断的添加数据后,要对缓冲区的最后的数据进行操作,必须转成字符串才可以。
String str = sb.append(true).append("hehe").toString();

我们阅读StringBuilder的API说明发现,它也是一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

正则表达式

正则表达式是一个字符串,使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。

举例:校验qq号码.
1: 要求必须是5-15位数字
2: 0不能开头
代码演示:
String qq = "604154942";
String regex = "[1-9][0-9]{4,14}";
boolean flag2 = qq.matches(regex);

举例:校验手机号码
1:要求为11位数字
2:第1位为1,第2位为3、4、5、7、8中的一个,后面9位为0到9之间的任意数字。
代码演示:
String phone = "18800022116";
String regex = "1[34578][0-9]{9}";
boolean flag = phone.matches(regex);

 举例:分割出字符串中的的数字
代码演示:
String s = "18-22-40-65";
String regex = "-";
String[] result = s.split(regex);
代码演示:
String s = "18 22 40 65";
String regex = " ";
String[] result = s.split(regex);

邮箱

String reg3="[1-9A-z_][\\w]+@[A-z0-9]+(\\.+[A-z]+)+";
    String em="499880898@qq.com";
    System.out.println(em.matches(reg3));

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

网友评论