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. 【HDU】HDU5664 Lady CA and the graph

    原题链接 题解 距离省选只有一周了我居然才开始数据结构康复计划 这题很简单,就是点分树,然后二分一个值,我们计算有多少条路径大于这个值 对于一个点分树上的重心,我们可以通过双指针的方法求出它子树里的路 ...

  2. Python学习(十八)—— 数据库(三)

    转载自http://www.cnblogs.com/linhaifeng/articles/7356064.html 一.数据操作 1.插入数据INSERT 1. 插入完整数据(顺序插入) 语法一: ...

  3. BZOJ1117 [POI2009]救火站Gas 贪心

    原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ1117.html 题目传送门 - BZOJ1117 题意 给你一棵树,现在要建立一些消防站,有以下要求: ...

  4. Ubuntu 硬盘分区只读,重新挂载为读写分区之后,文件依然创建出错

    原因: 分区只读,可能是windows没有正常关机,或者使用了混合休眠模式. 解决方案: sudo mount -o remount,rw /dev/sdaX 若重新挂载后,创建文件以及文件夹失败: ...

  5. day56 文件 文档处理,事件

    前情回顾: 1. 前情回顾 0. 选择器补充 - 属性选择器 - $("[egon]") - $("[type='text']") - $("inpu ...

  6. 浪里个浪 FZU - 2261

    TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划. 现在他的手上有一份天朝地图,上面有n个城市,m条交通路径,每条交通路径都是单行道.他已经预先 ...

  7. POJ 1988 Cube Stacking 【带权并查集】

    <题目链接> 题目大意: 有几个stack,初始里面有一个cube.支持两种操作: 1.move x y: 将x所在的stack移动到y所在stack的顶部. 2.count x:数在x所 ...

  8. 最长不下降子序列nlogn

    b[i]表示长度为i的最长不下降子序列的最小末尾元素的值显然它是单调递增的,满足二分性质,然后就可以愉快地二分啦. #include<iostream> #include<cstdi ...

  9. 同一台电脑上个人的github账户如何与公司的gitlab账户共存

    前些天,写了篇博客 开发环境之git:团队协作git工作流与常用命令. 主要是回顾其中的第一小节基本配置. 但是对于很多程序员而言,我们不仅有公司的gitlab账户做公司的业务,也会有自己个人的git ...

  10. ReentrantLock和condition源码浅析(一)

    转载请注明出处..... 一.介绍 大家都知道,在java中如果要对一段代码做线程安全操作,都用到了锁,当然锁的实现很多,用的比较多的是sysnchronize和reentrantLock,前者是ja ...