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)接口名为形参 需要的是该接口 ...
随机推荐
- HDU 1074 Doing Homework(DP状态压缩)
题意:有n门功课需要完成,每一门功课都有时间期限以及你完成所需要的时间,如果完成的时间超出时间期限多少单位,就会被减多少学分,问以怎样的功课完成顺序,会使减掉的学分最少,有多个解时,输出功课名字典序最 ...
- 【BZOJ4715】囚人的旋律
题解: 思考了很久这个图的特点没有发现 看了题解瞬间醒悟原来要在序列上做 还原出这张图显然是O(N^2)可以做的 然后其实就比较简单了 首先为了满足独立集,我们需要保证所取元素递增 为了满足覆盖集,我 ...
- python全栈开发day70-Django中间件
参考个人博客 http://wuchengyi.com/post/13/ 三.预习和扩展
- sparkStreaming消费kafka-0.8方式:direct方式(存储offset到zookeeper)
生产中,为了保证kafka的offset的安全性,并且防止丢失数据现象,会手动维护偏移量(offset) 版本:kafka:0.8 其中需要注意的点: 1:获取zookeeper记录的分区偏移量 2: ...
- Python学习(二十四)—— 前端基础之Bookstrap
转载自:http://www.cnblogs.com/liwenzhou/p/8214637.html 一.Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.Jav ...
- python--装饰器2--理解
一.装饰无参函数①.原函数target为无参函数②.装饰函数的内置函数也必须要是无参函数③.运行原理相当于:target()=decorator(target)()---->最后的()相当于执行 ...
- 微信获取地理位置转城市demo
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js ...
- 在 Wiki 标记中添加无序列表
项目:在 Wiki 标记中添加无序列表在编辑一篇维基百科的文章时,你可以创建一个无序列表,即让每个列表项占据一行,并在前面放置一个星号.但是假设你有一个非常大的列表,希望添加前面的星号.你可以在每一行 ...
- GRNN/PNN:基于GRNN、PNN两神经网络实现并比较鸢尾花种类识别正确率、各个模型运行时间对比—Jason niu
load iris_data.mat P_train = []; T_train = []; P_test = []; T_test = []; for i = 1:3 temp_input = fe ...
- HDU 2289 Cup【二分】
<题目链接> 题目大意: 一个圆台型的杯子,它的上底半径和下底半径已经给出,并且给出它的高度,问你,体积为V的水倒入这个杯子中,高度为多少. 解题分析: 就是简单的二分答案,二分枚举杯中水 ...