Java学习【知识点及代码9】
来源:互联网 发布:2016淘宝818活动 编辑:程序博客网 时间:2024/06/05 06:13
10.
10.1
Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法
Calendar(日历类) – 获取年,获取月,获取日,获取时,获取分,获取秒。
public int get(int field):返回给定日历字段的值
package com.edu.calendar;import java.util.Calendar;public class CalendarDemo { public static void main(String[] args) { /** * 创建对象: * 1.new 类名(); * 2.有一些类是抽象类,他为我们提供了一个成员方法,而这个成员方法的返回值就是这个抽象类的子类对象 * * Calendar(日历类) -- 获取年,获取月,获取日,获取时,获取分,获取秒。 public int get(int field):返回给定日历字段的值 */ //public static Calendar getInstance() //使用默认时区和语言环境获得一个日历。返回的 Calendar 基于当前时间 Calendar c = Calendar.getInstance(); //获取年份 System.out.println(c.get(Calendar.YEAR)); //获取月份,注意值是从0-11月,我们想要显示的更加付给我们的阅读规则,就必须给月份加上1 System.out.println(c.get(Calendar.MONTH)+1); //获取日期 System.out.println(c.get(Calendar.DATE)); //获取时 System.out.println(c.get(Calendar.HOUR)); //获取分 System.out.println(c.get(Calendar.MINUTE)); //获取秒数 System.out.println(c.get(Calendar.SECOND)); //使用字符串的拼接拼接成你想要的日期格式 }}
10.2
需求:获取当前时间的5年后的3个月前的7天后。
public void add(int field,int amount):根据amount修改field的值
public void set(int year,int month,int date):设置当前日历的年月日
package com.edu.calendar;import java.util.Calendar;public class CalendarDemo2 { public static void main(String[] args) { /** * 10.2 需求:获取当前时间的5年后的3个月前的7天后。 public void add(int field,int amount):根据amount修改field的值 public void set(int year,int month,int date):设置当前日历的年月日 */ //创建Calendar对象啊 Calendar c = Calendar.getInstance();/* //需求:要给当前的日历时间加上5天 c.add(Calendar.DATE, 5); //输出一下日期 System.out.println(c.get(Calendar.DATE)); //需求:将年份向前推一年 c.add(Calendar.YEAR, -1); System.out.println(c.get(Calendar.YEAR));*/ System.out.println("-----------------"); // public void set(int year,int month,int date):设置当前日历的年月日 c.set(2016, 9, 9); System.out.println(c.get(Calendar.YEAR)); System.out.println(c.get(Calendar.MONTH)+1); System.out.println(c.get(Calendar.DATE)); }}
10.3
键盘录入年份,获取任意一年的二月有多少天
package com.edu.calendar;import java.util.Calendar;import java.util.Scanner;public class CalendarTest { public static void main(String[] args) { // 10.3 键盘录入年份,获取任意一年的二月有多少天 /** * 1.获取年份 * 2.将日历对象的时间调到,此年的3月的第一天 * 3.将日期对象向前推一天 * 4.获取此天的日期 */ System.out.println("请输入年份"); Scanner sc = new Scanner(System.in); int year = sc.nextInt(); // 2.将日历对象的时间调到,此年的3月的第一天 Calendar c = Calendar.getInstance(); c.set(year, 2, 1); //3.将日期对象向前推一天 c.add(Calendar.DATE, -1); //4.获取此天的日期 System.out.println("该年的二月有"+c.get(Calendar.DATE)); }}
11.正则表达式:
11.1
正则表达式:符合一定规则的字符串
案例:(用正则和代码两种方式实现)
键盘录入qq号码,校验QQ号码。
需求:
1:要求必须是5-15位数字
2:0不能开头
package com.edu.regex1;import java.util.Scanner;public class RegexDemo { public static void main(String[] args) { /** * 案例:(用正则和代码两种方式实现) 键盘录入qq号码,校验QQ号码。 需求: 1:要求必须是5-15位数字 2:0不能开头 分析:(封装一个方法,这个方法的返回值是布尔类型,参数就是qq号码) 1.判断qq号码的长度,5-15位之间 2.不能以0开头 3.每一位的字符必须是数字 */ System.out.println("请输入你需要校验的qq号码"); Scanner sc = new Scanner(System.in); String qq = sc.nextLine(); //将获取到的qq号码传递给我这个方法 //方式1:使用代码进行校验qq号码 //System.out.println(isCheck(qq)); //方式2:使用正则表达式校验qq号码 System.out.println(isCheck2(qq)); } private static boolean isCheck2(String qq) { //定义一个校验qq号码的正则表达式,这个正则表达式就是符合我的qq号码的校验规则的正杂表达式 String reg = "[1-9][0-9]{4,14}"; //使用正则表达式校验我的qq号码 boolean flag = qq.matches(reg); return flag; } private static boolean isCheck(String qq) { //定义一个标记 boolean flag = true; //在这里进行校验判断,但凡有一个条件不满足,就更该flag的值为false //1.判断qq号码的长度,5-15位之间 if (qq.length()>=5&&qq.length()<=15) { //2.不能以0开头 if (!qq.startsWith("0")) { //3.每一位的字符必须是数字 char[] qqChs = qq.toCharArray(); //遍历字符数组 for (int i = 0; i < qqChs.length; i++) { if (Character.isDigit(qqChs[i])) { }else { flag = false; } } }else { flag = false; } }else { //更改flag的值 flag = false; } return flag; }}
11.2
规则字符在java.util.regex Pattern类中
A:字符 x 字符x(举例:a,1) \\ 反斜线字符B:字符类 [abc] a、b 或 c(简单类) [^abc] 任何字符,除了 a、b 或 c(否定) [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) [0-9] 0-9字符C:预定义字符类 . 任何字符 \d 数字:[0-9] \w 单词字符:[a-zA-Z_0-9]D:Greedy 数量词 X? X,一次或一次也没有 X* X,零次或多次 X+ X,一次或多次 X{n} X,恰好 n 次 X{n,} X,至少 n 次 X{n,m} X,至少 n 次,但是不超过 m 次 结论:以后需要匹配的正则表达式怎么写呢?答:不用写,直接网上百度
11.3
判断功能:
public boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
需求1:找出规则,写出正则(1[38][0-9]{9}),校验电话号码
13245678901 13332345678 13456789012 18812345678 18999999999
18666666666 18786868686
package com.edu.regex1;public class RegexDemo2 { public static void main(String[] args) { String number = "13245678901"; //正则表达式 String reg = "1[38][0-9]{9}"; //调用maches(String reg)进行判断指定字符串是否匹配指定的正则表达式 boolean flag = number.matches(reg); System.out.println(flag); }}
需求2:找出规则,写出正则(String reg = “[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,8}(\.[comnet]{2,3})+”),校验邮箱
sunmeng@163.com zhangsan@126.com lisi@sina.com wxd1221@sina.com.cn
csf@gmail.com 1512345@qq.com
package com.edu.regex1;public class RegexDemo3 { public static void main(String[] args) { String email = "zhangsan@126.com"; //写一个正则表达式验证这些个邮箱 String reg = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,8}(\\.[comnet]{2,3})+"; //依据正则表达式来验证上面的邮箱 System.out.println(email.matches(reg)); }}
11.4
分割功能
public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
需求1:
分割如下字符串:
String s = “aa,bb,cc”;
String s2 = “aa.bb.cc”;
String s3 = “aa bb cc”;
String s4 = “aa bb cc”;
String s5 = “D:\baidu\20150826\day14”;
package com.edu.regex1;public class RegexDemo4 { public static void main(String[] args) { // String s = "aa,bb,cc"; //定以一个可以匹配到,的正则表达式/* String reg = ","; String s = "aa,bb,cc"; //使用split(String reg)切割字符串 String[] strs = s.split(reg); for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]); }*/ System.out.println("----------------"); /*String s2 = "aa.bb.cc"; String reg = "\\."; String[] strs = s2.split(reg); for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]); }*/ System.out.println("----------------");/* String s3 = "aa bb cc"; String reg = " "; String[] strs = s3.split(reg); for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]); }*/ System.out.println("----------------");/* String s4 = "aa bb cc"; String reg = " +"; String[] strs = s4.split(reg); for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]); }*/ System.out.println("----------------"); String s5 = "D:\\baidu\\20160826\\day14"; String reg = "\\\\"; String[] strs = s5.split(reg); for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]); } }}
需求2:
我有如下一个字符串:”91 27 46 38 50”
请写代码实现最终输出结果是:”27 38 46 50 91”
package com.edu.regex1;import java.util.Arrays;public class RegexDemo5 { public static void main(String[] args) { //切割字符串 String s = "91 27 46 38 50"; String reg = " "; String[] strs = s.split(reg); //遍历字符串数组,并定义一个int[] int[] arr = new int[strs.length]; for (int i = 0; i < strs.length; i++) { arr[i] = Integer.parseInt(strs[i]); } //排序int[] Arrays.sort(arr); //遍历数组 StringBuffer sb = new StringBuffer(); for (int i = 0; i < arr.length; i++) { sb.append(arr[i]+" "); } //将sb转换为String类型 System.out.println(sb.toString()); }}
11.5
替换功能
public String replaceAll(String regex,String replacement):把符合regex的用replacement替换
需求:字符串中的数字使用*代替
package com.edu.regex1;public class RegexDemo6 { public static void main(String[] args) { String s = "我的银行卡号是:6102344354565"; String reg = "[0-9]"; String newStr = s.replaceAll(reg, "*"); System.out.println(newStr); }}
- Java学习【知识点及代码9】
- Java学习【知识点及代码4.1】
- Java学习【知识点及代码5】
- Java学习【知识点及代码6】
- Java学习【知识点及代码7】
- Java学习【知识点及代码8】
- java学习【知识点及代码10】
- java学习【知识点及代码11】
- java学习【知识点及代码12.1异常】
- java学习【知识点及代码12.2】
- java学习【知识点及代码13】
- java学习【知识点及代码14】
- java学习【知识点及代码15】
- java学习【知识点及代码16】
- java学习【知识点及代码17】
- java学习【知识点及代码18】
- JAVA学习代码——知识点
- 常用代码及知识点集合
- Increasing Triplet Subsequence
- POJ1655:Balancing Act(树的重心 DFS)
- Maven中pom.xml文件的节点元素说明
- MyEclipse设置代码补全/字符编码/外部tomcat
- Flink自定义窗口
- Java学习【知识点及代码9】
- hibernate中写配置文件xxx.hbm.xml时那个成员变量的类型type如何写的问题
- post 400 (Bad Request)异常怎么排查参数问题
- AVL树—java
- 错误日志----spring-jackson
- BZOJ4828: [Hnoi2017]大佬
- 关于类似这种java.lang.NoClassDefFoundError: com/alipay/api/AlipayApiException
- Spring注解@Scope("prototype")
- 安装wordpress的操作