------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
23.01_常见对象(正则表达式的概述和简单使用)
- A:正则表达式
- 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。
-
B:案例演示
-
需求:校验qq号码.
- 1:要求必须是5-15位数字
- 2:0不能开头
- 3:必须都是数字
-
a:非正则表达式实现
<span style="font-size:14px;">public static boolean checkQQ(String qq) { boolean flag = true; // 1.验证长度是5-15之间 String类的length() int len = qq.length(); if (!(len >= 5 && len <= 15)) { flag = false; } // 2.验证不能以0开头 // substring charAt startsWith if (qq.startsWith("0")) { flag = false; } // 3.验证qq号码是数字组成 char[] ch = qq.toCharArray(); for (int i = 0; i < ch.length; i++) { // if(!(ch[i]>='0'&&ch[i]<='9')){ if (!Character.isDigit(ch[i])) { flag = false; break; } } return flag; } public static void main(String[] args) { // 从键盘接收qq Scanner sc = new Scanner(System.in); System.out.println("请输入你的QQ号码"); String qq = sc.nextLine(); // 调用checkQQ方法进行验证 boolean flag = checkQQ(qq); System.out.println(flag); } </span>
b:正则表达式实现
-
<span style="font-size:14px;"> public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的QQ号码");
String qq = sc.nextLine();
boolean flag = checkQQ(qq);
System.out.println(flag);
}
public static boolean checkQQ(String qq) {
return qq.matches("[1-9][0-9]{4,14}");
}</span>
23.02_常见对象(字符类演示)
<span style="font-size:14px;"> public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的QQ号码");
String qq = sc.nextLine();
boolean flag = checkQQ(qq);
System.out.println(flag);
}
public static boolean checkQQ(String qq) {
return qq.matches("[1-9][0-9]{4,14}");
}</span>
- A:字符类
- [abc] a、b 或 c(简单类)
- [^abc] 除了 a、b 或 c之外的任何字符(否定)
- [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
- [0-9] 0到9的字符都包括
23.03_常见对象(预定义字符类演示)
- A:预定义字符类
- . 任何字符。
- \d 数字:[0-9]
- \w 单词字符:[a-zA-Z_0-9]
23.04_常见对象(数量词)
- A:Greedy 数量词
- X? X,一次或一次也没有
- X* X,零次或多次
- X+ X,一次或多次
- X{n} X,恰好 n 次
- X{n,} X,至少 n 次
- X{n,m} X,至少 n 次,但是不超过 m 次
23.05_常见对象(正则表达式的分割功能)
- A:正则表达式的分割功能
- String类的功能:public String[] split(String regex)
- B:案例演示
- 正则表达式的分割功能
<span style="font-size:14px;">public class RegexDemo3 { public static void main(String[] args) { //准备需要的数据 //String age = "18-20-30-50"; //String age = "18 20 30 50"; String age = "18.20.30.50"; //指定规则 //String regex = "-"; //String regex = " "; String regex = "\\."; //切割 String[] arr = age.split(regex); System.out.println(Arrays.toString(arr)); } }</span>
- 正则表达式的分割功能
23.06_常见对象(把给定字符串中的数字排序)
- A:案例演示
- 需求:我有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”
<span style="font-size:14px;"> String st = "91 27 46 38 50";
// 将字符串使用空格切割 ["91","27","46","38","50"]
String regex = " +";
String[] str = st.split(regex);
System.out.println(Arrays.toString(str));
// 将字符串数组中的所有字符串转换成数字,并将这些字符串放到int[]
int[] arr = new int[str.length];
//将str字符串数组中的每一个字符串得到,转换成int类型数字,将其装入到arr数组中。
for (int i = 0; i < str.length; i++) {
arr[i] = Integer.parseInt(str[i]);
}
// System.out.println(Arrays.toString(arr));
//排序输出
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));</span>
23.07_常见对象(正则表达式的替换功能)
- A:正则表达式的替换功能
- String类的功能:public String replaceAll(String regex,String replacement)
- B:案例演示
- 正则表达式的替换功能
<span style="font-size:14px;"> String s="abcd6efg34hi3jk221lm6n";
//String ss=s.replaceAll("[0-9]+", "*");
String ss=s.replaceAll("\\d+", "*");
System.out.println(ss);</span>
23.08_常见对象(正则表达式的分组功能)
<span style="font-size:14px;"> String s="abcd6efg34hi3jk221lm6n";
//String ss=s.replaceAll("[0-9]+", "*");
String ss=s.replaceAll("\\d+", "*");
System.out.println(ss);</span>
- A:正则表达式的分组功能
- 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
-
1 ((A)(B(C))) 2 \A 3 (B(C)) 4 (C) 组零始终代表整个表达式。
B:案例演示
a:切割
需求:请按照叠词切割: “sdqqfgkkkhjppppkl”;//”(.)\1+”
b:替换
需求:我我….我…我.要…要要…要学….学学..学.编..编编.编.程.程.程..程
将字符串还原成:“我要学编程”。
<span style="font-size:14px;"> String s = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程";
String temp = s.replaceAll("\\.+", "");
String ss = temp.replaceAll("(.)\\1+", "$1");//$1表示 正则获取到的第一组
System.out.println(ss);1
</span>
23.09_常见对象(Pattern和Matcher的概述)
<span style="font-size:14px;"> String s = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程";
String temp = s.replaceAll("\\.+", "");
String ss = temp.replaceAll("(.)\\1+", "$1");//$1表示 正则获取到的第一组
System.out.println(ss);1
</span>
- A:Pattern和Matcher的概述
-
B:模式和匹配器的典型调用顺序
-
通过JDK提供的API,查看Pattern类的说明
-
典型的调用顺序是
- Pattern p = Pattern.compile(“a*b”);
- Matcher m = p.matcher(“aaaaab”);
- boolean b = m.matches();
-
23.10_常见对象(正则表达式的获取功能)
- A:正则表达式的获取功能
- Pattern和Matcher的结合使用
- B:案例演示
- 需求:把一个字符串中的手机号码获取出来
<span style="font-size:14px;"> String s = "我我13146319176我012344我121323要13281194733要要...要学....学学..学.编..编编.编.程.程.程..程";
Pattern p = Pattern.compile("[1][34578]\\d{9}");
Matcher m = p.matcher(s);
while (m.find()) {
String subStr = m.group();
System.out.println(subStr);
}
}</span>
<span style="font-size:14px;"> String s = "我我13146319176我012344我121323要13281194733要要...要学....学学..学.编..编编.编.程.程.程..程";
Pattern p = Pattern.compile("[1][34578]\\d{9}");
Matcher m = p.matcher(s);
while (m.find()) {
String subStr = m.group();
System.out.println(subStr);
}
}</span>
23.11_常见对象(Math类概述和方法使用)
- A:Math类概述
- Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
- B:成员方法
- public static double abs(double a)返回 double 值的绝对值
- * public static double ceil(double a) 返回比参数大的最小double整数
* public static double floor(double a) 返回比参数小的最大double整数
* public static double max(double a, double b)返回两个 double 值中较大的一个
* public static double min(double a, double b)返回两个 double 值中较小的一个
* public static double pow(double a, double b)返回第一个参数的第二个参数次幂的值<span style="font-size:14px;">//public static double abs(double a)返回 double 值的绝对值 double d1 = 3.1415; double d2 = -3.199999; System.out.println("abs:" + Math.abs(d1)); //public static double ceil(double a) System.out.println("ceil:" + Math.ceil(d1));//4.0 //public static double floor(double a) System.out.println("floor:" + Math.floor(d1));//3.0 //public static double max(double a, double b) System.out.println("max:" + Math.max(d1, d2));//3.1415 //public static double pow(double a, double b) System.out.println("pow:" + Math.pow(2.0, 3));//8.0 //public static double random() System.out.println("random:" + Math.random()); //public static long round(double a) 四舍五入 System.out.println("round:" + Math.round(3.6));//4 </span>
23.12_常见对象(Random类的概述和方法使用)
- A:Random类的概述
- 此类用于产生随机数如果用相同的种子创建两个 Random 实例,
- 则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
- B:构造方法
- public Random()//使用毫秒值做为种子
- public Random(long seed)
- C:成员方法
- public int nextInt()
- public int nextInt(int n)//0–n(不含n)
23.13_常见对象(System类的概述和方法使用)
- A:System类的概述
- System 类包含一些有用的类字段和方法。它不能被实例化。
- B:成员方法
- public static void gc()//实际执行类中finalize()
- public static void exit(int status)//status为0正常关闭虚拟机,非0异常关闭
- public static long currentTimeMillis()//当前毫秒值
- C:案例演示
- System类的成员方法使用
<span style="font-size:14px;">//Person p = new Person("小明",20); //System.out.println(p.toString()); //p = null; //垃圾对象 //System.gc(); //System.out.println(p.toString()); for (int i = 0; i < 100; i++) { if (i == 50) { //break;//退出循环 System.exit(0);//退出JVM } System.out.println(i); } System.out.println("over"); //--------------------------------- //currentTimeMillis 获取当前系统的毫秒值时间 System.out.println( System.currentTimeMillis() );</span>
- System类的成员方法使用
23.14_常见对象(BigInteger类的概述和方法使用)
- A:BigInteger的概述
- 可以让超过Integer范围内的数据进行运算
- B:构造方法
- public BigInteger(String val)
- C:成员方法
- public BigInteger add(BigInteger val)
- public BigInteger subtract(BigInteger val)
- public BigInteger multiply(BigInteger val)
- public BigInteger divide(BigInteger val)
- public BigInteger[] divideAndRemainder(BigInteger val)
<span style="font-size:14px;">public class BigIntegerDemo { public static void main(String[] args) { // System.out.println(Integer.MAX_VALUE);/2147483647 //Integer in = new Integer("2147483647"); //System.out.println(in); Integer in2 = new Integer("2147483648");//超出范围 , NumberFormatException System.out.println(in2); BigInteger bin = new BigInteger("2147483648"); System.out.println(bin); } }</span>
23.15_常见对象(BigDecimal类的概述和方法使用)
-
A:BigDecimal的概述
- 由于在运算的时候,float类型和double很容易丢失精度。
-
所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
-
不可变的、任意精度的有符号十进制数。
- B:构造方法
- public BigDecimal(String val)
- C:成员方法
- public BigDecimal add(BigDecimal augend)
- public BigDecimal subtract(BigDecimal subtrahend)
- public BigDecimal multiply(BigDecimal multiplicand)
- public BigDecimal divide(BigDecimal divisor)
- D:案例演示
- BigDecimal类的构造方法和成员方法使用
<span style="font-size:14px;">public class BigDecimalDemo { public static void main(String[] args) { System.out.println(0.09 + 0.01);//0.1 System.out.println(1.0 - 0.32);//0.68 System.out.println(1.015 * 100);//101.5 System.out.println(1.301 / 100);//0.01301 } } </span>
- BigDecimal类的构造方法和成员方法使用
23.16_常见对象(Date类的概述和方法使用)
- A:Date类的概述
- 类 Date 表示特定的瞬间,精确到毫秒。
- B:构造方法
- public Date()
- public Date(long date)
- C:成员方法
- public long getTime()
- public void setTime(long time)
<span style="font-size:14px;">public class DateDemo { public static void main(String[] args) { Date date = new Date(); System.out.println(date); Date date2 = new Date(1000);//1秒 System.out.println(date2); } } </span>
23.17_常见对象(SimpleDateFormat类实现日期和字符串的相互转换)
- A:DateFormat类的概述
- DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDateFormat
- B:SimpleDateFormat构造方法
- public SimpleDateFormat()
- public SimpleDateFormat(String pattern)
- C:成员方法
- public final String format(Date date)
- public Date parse(String source)
<span style="font-size:14px;">private static void method2() throws ParseException { //创建时间字符串 String time = "2015年05月05日 17:25:52"; //创建日期格式化对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //通过/通过日期格式化对象,将时间字符串 转换成 日期对象 Date d = sdf.parse(time); System.out.println(d); } private static void method1() { //创建日期格式化对象 //SimpleDateFormat sdf = new SimpleDateFormat(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //创建日期对象 Date date = new Date(); //通过日期格式化对象,将日期 格式化成 我们能看懂的格式 String str = sdf.format(date); System.out.println(str);</span>
23.18_常见对象(你来到这个世界多少天案例)
- A:案例演示
- 需求:算一下你来到这个世界多少天?
<span style="font-size:14px;"> String s = "1988-10-08";
// 1.根据出生年月日得以一个Date对象birthday。
Date birthday = DateFormatUtils.StringToDate(s, "yyyy-MM-dd");
// 2.得到birthday代表的毫秒值
long l1 = birthday.getTime();
// 3.使用现在的时间毫秒值-birthday毫秒值 = 从出生到现在经过的毫秒。
long l = System.currentTimeMillis() - l1;
// long l = new Date().getTime() - l1;
// 4.使用毫秒值/一天的毫秒=活了多少天.
System.out.println(l / (24 * 60 * 60 * 1000));1
</span>
23.19_常见对象(日期工具类的编写和测试案例)
<span style="font-size:14px;"> String s = "1988-10-08";
// 1.根据出生年月日得以一个Date对象birthday。
Date birthday = DateFormatUtils.StringToDate(s, "yyyy-MM-dd");
// 2.得到birthday代表的毫秒值
long l1 = birthday.getTime();
// 3.使用现在的时间毫秒值-birthday毫秒值 = 从出生到现在经过的毫秒。
long l = System.currentTimeMillis() - l1;
// long l = new Date().getTime() - l1;
// 4.使用毫秒值/一天的毫秒=活了多少天.
System.out.println(l / (24 * 60 * 60 * 1000));1
</span>
- A:案例演示
- 日期工具类的编写
<code></code><pre class="html" name="code"><span style="font-size:14px;">// 1.可以将字符串分析成Date对象 /** * 参数: s:代表的是要解析的字符串 pattern:模板 返回值: 将s解析后的Date对象 * * @throws ParseException */ public static Date StringToDate(String s, String pattern) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.parse(s); } // 2.可以将一个Date对象格式化成String /** * 参数: * d:代表的是要格式化的Date对象 * pattern:模板 * 返回值: * 它是d按照pattern模板格式化的字符串结果 */ public static String DateToString(Date d, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(d); </span>
23.20_常见对象(Calendar类的概述和获取日期的方法)
- A:Calendar类的概述
- Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
- B:成员方法
- public static Calendar getInstance()
- public int get(int field)//某个字段
23.21_常见对象(Calendar类的add()和set()方法)
- A:成员方法
- public void add(int field,int amount)
- public final void set(int year,int month,int date)
- B:案例演示
- Calendar类的成员方法使用
<span style="font-size:14px;"> // Calendar 对象,其日历字段已由当前日期和时间初始化
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
System.out.println(year);
//获取月份
System.out.println(c.get(Calendar.MONTH));
//获取天
System.out.println(c.get(Calendar.DATE));
//获取小时
System.out.println(c.get(Calendar.HOUR));
//获取分钟
System.out.println(c.get(Calendar.MINUTE));1
</span>
23.22_常见对象(如何获取任意年份的2月份有多少天)
<span style="font-size:14px;"> // Calendar 对象,其日历字段已由当前日期和时间初始化
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
System.out.println(year);
//获取月份
System.out.println(c.get(Calendar.MONTH));
//获取天
System.out.println(c.get(Calendar.DATE));
//获取小时
System.out.println(c.get(Calendar.HOUR));
//获取分钟
System.out.println(c.get(Calendar.MINUTE));1
</span>
- A:案例演示
- 需求:键盘录入任意一个年份,获取任意一年的二月有多少天
<span style="font-size:14px;"> // 1.从键盘输入一个年份
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份");
int year = sc.nextInt();
// 2.创建一个Calendar对象,将其YEAR字段值设置为year,将MONTH设置为
Calendar c = Calendar.getInstance();
c.set(year, 2, 1); //设置为3月1日
//3.将c的Date字段值-1
c.add(Calendar.DATE, -1);
System.out.println(c.get(Calendar.DATE));</span>