JAVA自学笔记14
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的更多相关文章
- JAVA自学笔记11
JAVA自学笔记11 1:Eclipse的安装 2:用Eclipse写一个HelloWorld案例,最终在控制台输出你的名字 A:创建项目 B:在src目录下创建包.cn.itcast C:在cn.i ...
- JAVA自学笔记18
JAVA自学笔记18 1.Map接口: 1)功能: 2) Map<String,String>m=new HashMap<String,String>(); //添加元素,元素 ...
- JAVA自学笔记26
JAVA自学笔记26 1.网络编程 1)用来实现网络互联的不同计算机上运行的程序可以进行数据交换 2)网络模型一般泛指 OSI:(Open System Interconnection)开放系统互联参 ...
- JAVA自学笔记09
JAVA自学笔记09 1.子类的方法会把父类的同名方法覆盖(重写) 2.final: 1)可修饰类.方法.变量 2)修饰类时:此时该类变为最终类,它将无法成为父类而被继承 3)修饰方法时:该方法将无法 ...
- JAVA自学笔记05
JAVA自学笔记05 1.方法 1)方法就是完成特定功能的代码块,类似C语言中的函数. 2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,-){ 函数体; return ...
- JAVA自学笔记06
JAVA自学笔记06 1.二维数组 1)格式: ①数据类型[][]数组名 = new 数据类型[m][n]; 或 数据类型[]数组名[]=new 数据类型[m][n]; m表示这个二维数组有多少个一维 ...
- JAVA自学笔记04
JAVA自学笔记04 1.switch语句 1)格式:switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; - default: 语句体n+ ...
- JAVA自学笔记07
JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...
- JAVA自学笔记10
JAVA自学笔记10 1.形式参数与返回值 1)类名作为形式参数(基本类型.引用类型) 作形参必须是类的对象 2)抽象类名作形参 需要该抽象类的子类对象,通过多态实现 3)接口名为形参 需要的是该接口 ...
随机推荐
- 部署Asp.net core & Nginx,通过nginx转发
部署Asp.net core & Nginx,通过nginx转发 CentOS 7 x64 1.vs2017 建立Asp.net core项目,并发布到目录 2.通过FTP工具,将程序copy ...
- day100-序列化组件
3 序列化组件 class BookSerializer(serializers.Serializer): title = serializers.CharField( max_length=32) ...
- Python_模块介绍
模块:一组或者一个.py文件实现了某个功能的代码集合 模块分为三种: 自定义模块 内置标准模块(又称标准库):Python自带的模块 开源模块:自己写的模块,有可以供人使用的功能 开源模块的集散地:P ...
- weblogic弱密码检测
http://www.secbox.cn/hacker/tools/6252.html http://60.12.168.73:8088/console/login/LoginForm.jsp htt ...
- Codeforces 1144G Two Merged Sequences dp
Two Merged Sequences 感觉是个垃圾题啊, 为什么过的人这么少.. dp[ i ][ 0 ]表示处理完前 i 个, 第 i 个是递增序列序列里的元素,递减序列的最大值. dp[ i ...
- 移动端1px问题
.component-confirm__buttons { border-top: 1px solid #eceef0; box-shadow: 0 1px 1px #fff; } 造成边框变粗的原因 ...
- UOJ#275. 【清华集训2016】组合数问题 数位dp
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ275.html 题解 用卢卡斯定理转化成一个 k 进制意义下的数位 dp 即可. 算答案的时候补集转化一下 ...
- 三次Java实验整理汇报:
*第一节 eclipse操作,建Javaproject项目(可直接用中文名命名)->建包与类(名字相同) ->public static void main(String[] args){ ...
- Spring-1-(简介及HelloWord)
一:Spring简介 Spring 框架宗旨:不重新发明技术,让原有技术使用起来更加方便. Spring核心功能: 1.AOP:面向切面编程 2.Ioc/Di:控制反转/依赖注入 3.声明式事务 Sp ...
- Hudson与Jenkins
Hudson是Jenkins的前身,它们都是基于Java开发的一种持续集成工具,用于监控程序重复的工作,包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作. Hudson的特性 1 ...