一正则表达式:
1.作用:对字符串数据进行一些复杂的匹配 查找 替换
2.字符合集:
正则表达式 说明
[abc] a b c中任意一个字符
[^abc] 除了 a b c的任意字符
[a-z] a b c….z中的任意一个字符
[a-zA-Z0-9] a~z,A~Z,0~9中的任意一个字符
[a-z&&[^bc]] a~z中除了b和c以外的任意一个字符(&&与)
3.预定义字符集:
正则表达式 说明
. 任意一个字符
\d 任意一个数字字符,相当于[0-9]
\w 单词字符,相当于[a-zA-Z0-9]
\s 空白字符,相当于[\t\n\xOB\f\r]
\D 非数字字符
\W 非单词字符
\S 非空白字符
4.数量词:
正则表达式 说明
X? 表示0个或者1个X
X* 表示0个或任意多个X
X+ 表示1个到任意多个X(>=1)
X{n} 表示n个X
X{n,} 表示n个到任意多个X(>=n)
X{n,m} 表示n个到m个X
5.分组:
5.1>表示方法:()
5.2>作用:将一系列正则表达式看做一个整体(分组时可以使用”|”表示”或”关系)
6.边界匹配:
6.1> ^ 代表字符串开始
6.2> $ 代表字符串结束
7.String正则API(以下方法的参数regex都表示符合正则表达式)
7.1>matches: boolean matches(String regex)
使用给定的正则表达验证当前字符串是否满足格式要求
满足则返回true
(需要注意,给定的正则表达式无论是否加了边界符---(^...$)
都是进行全匹配验证)
邮箱验证:
String s="[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z]+)+";
boolean match=email.matches(s);
public class String_matches {
public static void main(String[] args) {
/*
* 邮箱的正则表达式:
* [a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z]+)+
*
*
*/
Scanner scan=new Scanner(System.in);
String email=scan.nextLine().trim();
String s="[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z]+)+";
boolean match=email.matches(s);
if(match){
System.out.println("是邮箱");
}else{
System.out.println("不是邮箱");
}
}
}
7.2>split String[] split(String regex)
将当前字符串按照给定正则表达式满足的部分进行拆分
将拆分出来的各部分内容存入一个字符串数组并返回
生成图片名:
String imgName="asdw21wd.jpg";
String name[]=imgName.split("\\.");
imgName=System.currentTimeMillis()+"."+name[1];
System.out.println(imgName);
public class String_split {
public static void main(String[] args) {
String imgName="asdw21wd.jpg";
String name[]=imgName.split("\\.");
imgName=System.currentTimeMillis()+"."+name[1];
System.out.println(imgName);
}
}
7.3>replaceAll String replaceAll(String regex,String str)
将给定字符串中满足正则表达式的部分替换为指定字符串
将英文部分替换"#CHAR#"
String str="aks123jkla14b1kn31k";
str=str.replaceAll("\\D+","#CHAR#");
System.out.println(str);
二.Object
1>Object类型的引用变量可以指向任何类型对象
2>toString方法:
通常一个类的toString被使用,这个toString就应当被重写
原则上返回的字符串中应当包含给定对象属性信息
public String toString(){
return "("+x+","+y+")";
}
3>equals方法:
通常使用一个类的equals方法就要重写它(java API提供的类基本都重写了.我们自己定义的类要自行重写)
equals方法的作用是比较两个对象”像不像”,即:内容是否一致
public boolean equals(Object obj){
if(obj==null){
return false;
}
if(obj==this){
return true;
}
if(obj instanceof Point){
Point p=(Point)obj;
return p.x==this.x&&p.y==this.y;
}
return false;
}
/**
* 该类的每一个实例用于表示直角坐标系中的一个点
*
*/
public class Point {
private int x;
private int y;
/*
* 通常一个类的toString被使用,这个toString就应当
* 被重写
* toString返回的字符串没有格式要求,按实际开发需求
* 而定
* 原则上返回的字符串中应当包含给定对象属性信息
*/
public String toString(){
return "("+x+","+y+")";
}
/**
* 通常使用一个类的equals方法就要重写它
* java API提供的类基本都重写了.我们自己定义的
* 类要自行重写
* equals方法的作用是比较两个对象"像不像",即:内容
* 是否一致
*/
public boolean equals(Object obj){
if(obj==null){
return false;
}
if(obj==this){
return true;
}
if(obj instanceof Point){
Point p=(Point)obj;
return p.x==this.x&&p.y==this.y;
}
return false;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
/**
* 用来测试Point重写Object的相关方法
*
*/
public class TestPoint {
public static void main(String[] args) {
Point p=new Point();
p.setX(1);
p.setY(1);
/*
* Object定义了toString方法,该方法返回当前
* 对象的句柄,即:类名@地址
* 通常情况下,我们需要使用一个类toString方法
* 时就应当重写该方法,返回一个更有意义的字符串
*/
String str1=p.toString();
//句柄
// System.out.println(str);
/*
* System.out.println(Object o)
* 该方法输出给定对象toString返回的字符串到
* 控制台
*/
System.out.println(p);
Point p2=new Point();
p2.setX(1);
p2.setY(1);
System.out.println(p2);
System.out.println(p==p2);
System.out.println(p.equals(p2));
String str2=p2.toString();
System.out.println(str1.equals(str2));
}
}
三.包装类
1>所有基本类型都有一个对应的包装类(包装类是不可变类)
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
2>常用方法:
Integer i2=Integer.valueOf(1);
int i3=Integer.valueOf(1);
System.out.println(i2.intValue());
int imax=Integer.MAX_VALUE;
int imin=Integer.MIN_VALUE;
包装类有一个静态方法:parseXXX(String str)
将给定的字符串转换为对应的基本类型值(字符串表示的内容是该基本类型可以保存的值)
String str="123";
int i=Integer.parseInt(str);
double d=Double.parseDouble(str);
public class Integer_parseInt {
public static void main(String[] args) {
String str="123";
int i=Integer.parseInt(str);
System.out.println(i);
double d=Double.parseDouble(str);
System.out.println(d);
}
}