JAVA自学笔记14

1、正则表达式

1)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则。有自己的特殊应用

2)组成规则:

规则字符在java.util.regex Pattern类中

常见组成规则:

字符:x(字符x)、\(反斜线字符)、 \n(换行)、\r(回车符)

字符类:

[abc](a或b或c,简单类)

[^abc](除了a/b/c以外的字符)

[a-zA–Z](两头的字母也包括在内(范围))

[0-9](0到9的字符都包括)

预定义字符类:

.(任何字符。若要表示.本身,则.)

\d(数字:[0-9])

\w(单词字符:[a-zA-Z_0-9])在正则表达式中组成单词的东西必须由这些东西组成

边界匹配器:

^ 行的开头

$ 行的结尾

\b 单词边界(不是单词字符的地方即[a-zA-Z_0-9])

数量词:(未给定数量词默认一次)

X? X,一次或一次也没有

X* X,零次或多次,包括1次

X+ X,一次或多次

X{n} X,恰好 n 次

X{n,} X,至少 n 次

X{n,m} X,至少 n 次,但是不超过 m 次

3)判断功能:public boolean matches(String regex)

告知此字符串是否匹配给定的正则表达式

//判断手机号是否符合要求
//录入手机号String phone;
//定义手机号的规则
String regex="1[38]\\d{9}";//规则解释:1开头,出现1次;3或8,出现1次;
//\\d是数字均可;{9},恰好重复9次
boolean flag=phone.matches(regex);

4)分割功能:public String[] split(String regex)

根据给定的正则表达式拆分此字符串,返回字符串数组

regex=”分隔符”;

①String s1=”aa,bb,cc”;

regex=”,”;

② String s2=”aa.bb.cc”;

regex=”\.”;

③ String s3=”aa bb cc”;

regex=” +”;

② String s4=”C:\Java\cc\2”;

regex=”\\”;

5)替换功能:public String replaceAll(String regex.String repacement)

eg: String s=”java6221rich1221127ios”;

//屏蔽62211221127

String regex=”\d”;

String s1=”*”;//”“是直接屏蔽

s.String replaceAll(regex,s1);

6)获取功能:Pattern与Matcher类的使用

Pattern类:正则表达式的编译表示形式

//典型的调用顺序

//需导包
//把正则表达式编译成模式对象
Pattern p=Pattern.compile("a*b");
//通过模式对象得到匹配器对象,这个时候需要的是被匹配的字符串
Matcher m=p.matcher("aaab");
//调用匹配器对象的功能matches()
boolean b=m.matches();//相当于是判断功能

//获取下面字符串中由3个字符组成的单词

String s=”ads cc sw, evx e a rv”;

String regex=”\b\w(3)\b”;

//把规则编译成模式对象

Pattern p=Pattern.compile(regex);

//通过模式对象得到匹配器对象

Matcher m=p.matcher(s);

//调用匹配器对象的功能

//通过find方法查找有没有满足条件的子串

boolean flag=m.find;

// 调用public String group()方法

while(m.find()){

System.out.println(m.group());

}

@例题1:校验一个qq账号

①5~15位数字

②0不能作为开头

public static boolean checkQQ(String qq){

//校验长度
if(qq.length()>=5&&qq.length()<=15){
if(!qq.startWith("0")){
char[] chs=qq.toCharArray();
for(int x=0kx<chs.length;x++){
char ch=char[x];
if(!Character.isDigit(ch)){
return false
}
}
return true;
}
else{
return false;
}
}else{return false;
}
}

用正则表达式改进:

String regex="[1-9][0-9]{4-14}";
//String类中的boolean matches(String regex)方法:告知此字符串是否匹配
//给定的正则表达式
return qq.matches(regex);//即可

@例题2:校验一个邮箱

String email;
//定义规则
String regex="[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\\.[a-zA-Z_0-9]{2,3})+";//[a-zA-Z_0-9]可用\w取代
boolean flag =email.matches(regex);

2、Math类

1)Math类包括用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数

2)静态类,成员方法请查看api

@例题4:设计方法获取任意范围内的随机数

public static int getRandom(int start,int end){
int num=(int)(Math.random()*(end-start+1))+start;
return num;
}

3、Random类

1)此类用于产生随机数。如果用相同的种子创建两个Random实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列

2)构造方法:

public Random();//无种子,默认用的是当前时间的毫秒值

public Random(long seed);

Random r=new Random();
for(int x=0;x<10;x++){
int nextInt();//将生成10个int范围内的随机数
int nextInt(100);//将生成10个0—100范围内的随机数
} Random r=new Random(1111);//给定种子后,每次得到的随机数是相等的

3)成员方法:

public int nextInt();

//返回下一个伪随机数,它是取自此随机数生成器的序列中均匀分布的int值

public int nextInt(int n);

//返回一个伪随机数,在0(包括)至n(不包括)范围内

4、System类

1)静态。包含一些有用的类字段和方法,不能被实例化

2)成员方法:

①public static void gc();

运行垃圾回收器,重写finalize()方法,收回被占用的空间。先释放自己的资源再释放父类的资源。不必频繁手动调用该方法,这样将占用大量的资源。一般不考虑垃圾回收问题。

重写finalize()实例:

protected void finalize(){

super.finalize();

}

②public static void exit(int status);

终止当前正在运行的java虚拟机,非0的状态码表示异常终止,一般用0

③public static long currrentTimeMills();

以毫秒为单位,返回当前时间,可用于估算程序执行时间

④public static void arraycopy(Object src,int srcPos,Objectdest,int destPos,int length);

5、BigInteger类

1)不可变的任意精度的整数。可以让超出Integer的范围的数据进行运算

2)构造方法:BigInteger(String val);

3)成员方法:加减乘除

6、BigDecimal类

1)由于在运算时,float类型和double很容易丢失精度,为了能精确表示计算浮点数,Java提供了BigDecimal

2)不可变的,任意精度的有符号十进制数

3)构造方法:

public BigDecimal(String s);

7、Date

1)Date表示特定的瞬间,精确到毫秒

2)构造方法:

public Date();//根据当前的默认毫秒值创建日期对象

public Date(long date);//根据给定的毫秒值创建日期对象

3)成员方法:

①public long getTime();//获取时间,以毫秒为单位

对象名.getTime();

②public void setTime(long time);//设置时间

8、DateFormat类

1)DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间

是抽象类,所以使用其子类SimpleDateFormat

2)Date-String(格式化)

//创建日期对象:
Date d=new Date();
//创建格式化对象
SimpleDateFormat sdf=new SimpleDateFormat();//无参,默认模式
String s=sdf.format(d);//调用format方法 //给定模式:在API中查找格式
//年y,月M,日d,时H,分m.秒s
SimpleDateFormat sdf=new SimpleDateFormat(yyyy年MM月dd日HH:mm:ss);

String-Date(解析)

String str="2008-08-08 12:12:12";
SimpleDateFormat sdf2=new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);
//在把一个字符串解析为日期的时候,请注意格式必须与给定的字符串格式匹配
Date dd=sdf2.parse(str);//调用parse方法

@例题5:制作一个工具类DateUtil

public class DateUtil{
private DataUtil(){
public static String dateToString(Date d,String format){
return new SimpleDateFormat(format).format(d);
}
public static Date stringToDate(String s,String format){
return new SimpleDateFormat(format).parse(s);
}
}
}

@例题6:你来到这个世界几天

String line=sc.nextLine();
SimpleDateFormat sdf=new SimpleDateFormat(yyyy-MM-dd);
Date d=sdf.parse(line); long myTime=d.getTime();
long nowtime=System.currentTimeMillis(); long time=nowTime-myTime; long day=time/100/60/60/24;

9、Calendar类

1)抽象类

2)成员方法:

public static Calendar getInstance();

Calendar rightNow=Calendar.getInstance();//子类对象,其日历字段已由当前日期初始化

public int get(int field) ;//返回给定日历字段的值,日历类中的每个日历字段都是静态的成员常量,并且是Int类型

//得到年

int year=rightNow.get(Calendar,YEAR);

public void add(int field,int amount)

根据日历的规则,为给定的日历字段加上或减去指定的时间量。field-日历字段

amount-为字段添加的日期或时间量

public final void set(int year,int month,int date)

设定当前的日历时间

@例题6:获取任意一年的2月有多少天

int year=sc.nextInt();

//设置日历对象的年月日
Calendar c=Calendar.getInstance();,
c,set(year,2,1);//其实是这一年的3月1日,把时间往前推一天,就是二月的最后一天
c.add(Calendar.DATE,-1)

JAVA自学笔记14的更多相关文章

  1. JAVA自学笔记11

    JAVA自学笔记11 1:Eclipse的安装 2:用Eclipse写一个HelloWorld案例,最终在控制台输出你的名字 A:创建项目 B:在src目录下创建包.cn.itcast C:在cn.i ...

  2. JAVA自学笔记18

    JAVA自学笔记18 1.Map接口: 1)功能: 2) Map<String,String>m=new HashMap<String,String>(); //添加元素,元素 ...

  3. JAVA自学笔记26

    JAVA自学笔记26 1.网络编程 1)用来实现网络互联的不同计算机上运行的程序可以进行数据交换 2)网络模型一般泛指 OSI:(Open System Interconnection)开放系统互联参 ...

  4. JAVA自学笔记09

    JAVA自学笔记09 1.子类的方法会把父类的同名方法覆盖(重写) 2.final: 1)可修饰类.方法.变量 2)修饰类时:此时该类变为最终类,它将无法成为父类而被继承 3)修饰方法时:该方法将无法 ...

  5. JAVA自学笔记05

    JAVA自学笔记05 1.方法 1)方法就是完成特定功能的代码块,类似C语言中的函数. 2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,-){ 函数体; return ...

  6. JAVA自学笔记06

    JAVA自学笔记06 1.二维数组 1)格式: ①数据类型[][]数组名 = new 数据类型[m][n]; 或 数据类型[]数组名[]=new 数据类型[m][n]; m表示这个二维数组有多少个一维 ...

  7. JAVA自学笔记04

    JAVA自学笔记04 1.switch语句 1)格式:switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; - default: 语句体n+ ...

  8. JAVA自学笔记07

    JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...

  9. JAVA自学笔记10

    JAVA自学笔记10 1.形式参数与返回值 1)类名作为形式参数(基本类型.引用类型) 作形参必须是类的对象 2)抽象类名作形参 需要该抽象类的子类对象,通过多态实现 3)接口名为形参 需要的是该接口 ...

随机推荐

  1. mysql 一张表的多个字段关联另外一张表

    SELECT vtiger_orderitem.orderid, ( SELECT vtiger_users.last_name FROM vtiger_users WHERE vtiger_orde ...

  2. 【译】你应该了解的JavaScript数组方法

    让我们来做一个大胆的声明:for循环通常是无用的,而且还导致代码难以理解.当涉及迭代数组.查找元素.或对其排序或者你想到的任何东西,都可能有一个你可以使用的数组方法. 然而,尽管这些方法很有用,但是其 ...

  3. ip访问网站和localhost访问网站中top使用

    对于相对定位,使用margin-top不用简单使用top. top在localhost中能正常显示,在ip访问时会出现多余空白. margin-top不管是localhost中还是ip中都能正常显示.

  4. Python_subprocess模块

    subprocess中,允许生成新的进程,连接到input/output/error管道,并获取他们的返回(状态)码,主要用于替换os.system/os.spawn*几个旧的模块和方法 subpro ...

  5. Python题目练习(二)

    1.如何实现对python列表去重,并保持原来顺序 li = [1,2,5,3,1,6,3,8,0,3,2,4] l = [] for i in li: if i not in l: l.append ...

  6. ubuntu镜像下载地址

    下载地址: http://mirror.pnl.gov/releases/xenial/ Ubuntu 14.04.5 LTS (Trusty Tahr)http://releases.ubuntu. ...

  7. Clairewd’s message ekmp

    给两个串第一个串是翻译表(密文可以通过翻译表翻译成明文),第二个串是由密文+明文组成,前面是密文(完整的),后面是明文(未必完整),问能不能把第二个串补全,输出最短的一种可能. 一开始 用的strin ...

  8. 亲和串 kmp

    Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现 ...

  9. 反向传播算法(前向传播、反向传播、链式求导、引入delta)

    参考链接: 一文搞懂反向传播算法

  10. Gson的两种实例化方式:

    2018-11-13   09:21:44 Gson的两种实例化方式: 1: 使用new Gson(); 普通实例化方式,不能配置定制化选项 Gson gson = new Gson(); 2: 通过 ...