一、知识点(必做):
CalendarDemo.java
需求:创建Calendar对象,并分别设置和获取日期的年、月、日、时、分、秒。
作业目的:掌握Calendar对象的创建,简单的设置和获取日期信息。
package hk.calendar;import java.text.SimpleDateFormat;import java.util.Calendar;public class CalendarDemo {public static void main(String[] args) {/*** 需求:创建Calendar对象,并分别设置和获取日期的年、月、日、时、分、秒。* 作业目的:掌握Calendar对象的创建,简单的设置和获取日期信息。*/Calendar calendar = Calendar.getInstance();int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH);int day = calendar.get(Calendar.DATE);int hour = calendar.get(Calendar.HOUR_OF_DAY);int minute = calendar.get(Calendar.MINUTE);int second = calendar.get(Calendar.SECOND);int week = calendar.get(Calendar.WEEK_OF_MONTH);System.out.println(calendar.getTime());}}
RegexDemo.java
需求:
- 判断一个字符串是否全部有数字组成
- 判断一个字符串是否是手机号码
- 判断一个字符串是否是18位身份证号码
- 判断一个字符串是否6到16位,且第一个字必须为字母
作业目的:了解正则表达式是什么东西,以后会查正则表达式即可。
package hk.regex;public class RegexDemo {public static void main(String[] args) {/*** 需求:*- 判断一个字符串是否全部有数字组成*- 判断一个字符串是否是手机号码* - 判断一个字符串是否是18位身份证号码*- 判断一个字符串是否6到16位,且第一个字必须为字母* 作业目的:了解正则表达式是什么东西,以后会查正则表达式即可。*/// 判断一个字符串是否全部有数字组成System.out.println("12345678S".matches("\\d"));// falseSystem.out.println("12345678".matches("\\d"));// falseSystem.out.println("12345678".matches("\\d*"));// trueSystem.out.println("1234".matches("\\d{5,10}"));// falseSystem.out.println("12345678".matches("\\d{5,10}"));// true// 判断一个字符串是否是手机号码String regex1 = "^1[3|4|5|7|8][0-9]{9}$";System.out.println("12712345678".matches(regex1));// falseSystem.out.println("13712345678".matches(regex1));// true// 判断一个字符串是否是18位身份证号码String regex2 = "\\d{17}[[0-9]X]";System.out.println("511123200110101234".matches(regex2));// trueSystem.out.println("51112320011010123X".matches(regex2));// trueSystem.out.println("51112320011010123S".matches(regex2));// false// 判断一个字符串是否6到16位,且第一个字必须为字母String regex3 = "^[a-zA-Z]\\w{5,15}$";System.out.println("will".matches(regex3));// falseSystem.out.println("17will".matches(regex3));//falseSystem.out.println("will17willwillwill".matches(regex3));//falseSystem.out.println("will17".matches(regex3));// true}}
DEBUG调试功能(重点)
需求:Debug调试
步骤:
(1)打断点
(2)以Debug As模式运行程序
ArrayCopyDemo.java(重点)
需求:定义一个方法,进行数组拷贝,并调用System中的数组拷贝方法
思路:

package hk.arraycopy;import wolfcode._03_arracopy.ArrayUtils;public class ArrayCopyDemo {public static void main(String[] args) {/*** 需求:定义一个方法,进行数组拷贝,并调用System中的数组拷贝方法*思路:**/int[] srcArr = {10, 20, 30, 40, 50, 60, 70, 80, 90};int[] destArr = new int[10];wolfcode._03_arracopy.ArrayUtils.arrayCopy(srcArr, 0, destArr, 2, 5);for (int item : srcArr) {System.out.println(item + "");}System.out.println();for (int item : destArr) {System.out.println(item + "");}}public static class ArrayUtils {public static void arrayCopy(int[] srcArr, int srcIndex, int[] destArr, int dextIndex, int length) {for (int i = 0; i < length; i++) {destArr[dextIndex + i] = srcArr[srcIndex + i];}}}}
ArraySortDemo.java
需求:定义一个方法,进行数组排序,并调用Arrays中的排序方法
思路:
(1)第一趟比较
遍历所有元素,比较元素之间的大小,上一个元素>下一个元素,两个元素进行交换
(2)比较多趟之后,总结规律
package hk.arraysort;import wolfcode._04_sort.ArraysUtils;public class ArraySortDemo {public static void main(String[] args) {/*** 需求:定义一个方法,进行数组排序,并调用Arrays中的排序方法* 思路:* (1)第一趟比较*遍历所有元素,比较元素之间的大小,上一个元素>下一个元素,两个元素进行交换* (2)比较多趟之后,总结规律*/int[] arr = new int[]{2, 9, 6, 7, 4, 1};ArraysUtils.bubbleSort(arr);}public abstract static class ArraysUtils {public static void bubbleSort(int[] arr) {int temp;//控制轮数6个数,需要5轮完全有序for (int i = 0; i < arr.length - 1; i++) {//每一轮两两比较for (int j = 0; j < arr.length - 1 - i; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}for (int item : arr) {System.out.print(item + " ");}}}}
ArraySreachDemo2.java
需求:定义一个方法,进行数组二分查找,并调用Arrays中的二分查找方法
思路:

package hk.arraysearch;import wolfcode._05_search.ArrayUtils;public class ArraySearchDemo {public static void main(String[] args) {/*** 需求:定义一个方法,进行数组二分查找,并调用Arrays中的二分查找方法* 思路:*/int[] arr = {1, 2, 3, 5, 6};int index = binarySeach(arr, 3);System.out.println(index);}public static int binarySeach(int[] arr, int key) {int low = 0;int high = arr.length - 1;int mid = (low + high) / 2;int midvalue = arr[mid];if (key == midvalue) {return mid;} else if (key > midvalue) {low = mid + 1;} else {high = mid - 1;}return -1;}}
ArraysDemo.java
需求:Arrays常用方法
步骤:
(1)调用Arrays中的toString来打印数组的元素
(2)调用Arrays中的sort来排序数组的元素
(3)调用Arrays中的binarySearch来查找数组元素,并观察返回值
(4)调用Arrays中的copyOf来复制数组,并打印复制的数组中的元素,并对比System.arraycopy
package hk.arrays;import java.util.Arrays;public class ArraysDemo {public static void main(String[] args) {/*** 需求:Arrays常用方法* 步骤:*(1)调用Arrays中的toString来打印数组的元素*(2)调用Arrays中的sort来排序数组的元素* (3)调用Arrays中的binarySearch来查找数组元素,并观察返回值* (4)调用Arrays中的copyOf来复制数组,并打印复制的数组中的元素,并对比System.arraycopy*/int[] arr = {1, 32, 325, 11, 367};System.out.println(Arrays.toString(arr));//打印数组元素Arrays.sort(arr);//排序System.out.println(Arrays.toString(arr));//排序后打印System.out.println(Arrays.binarySearch(arr,32));//binarySearch查找元素int[] str1 = Arrays.copyOf(arr, 6);//copyof复制数组System.out.println(Arrays.toString(str1));//复制后打印数组}}
二、综合练习(必做):
SreachDemo.java
需求:字符数组char[] arr={‘A’,‘1’,‘R’,‘!’,‘e’,‘&’,‘A’,‘5’,‘A’,‘g’,‘#’,‘D’},请使用循环,统计出其中英文字母‘A’的个数。
public class SearchDemo {public static void main(String[] args) {/*** 需求:字符数组char[] arr={‘A’,‘1’,‘R’,‘!’,‘e’,‘&’,‘A’,‘5’,‘A’,‘g’,‘#’,‘D’},* 请使用循环,统计出其中英文字母‘A’的个数。*/char[] arr={'A','1','R','!','e','&','A','5','A','g','#','D'};int sum=0;for (char item:arr) {if(item=='A'){sum++;}}System.out.println(sum);}}
ChangeDemo.java
需求:定义一个方法transfer(int[] arr, int index1, int index2)实现交换数组arr中索引为index1和index2对应元素的值。
package hk.change;import java.util.Arrays;public class ChangeDemo {public static void main(String[] args) {/*** 需求:定义一个方法transfer(int[] arr, int index1, int index2)* 实现交换数组arr中索引为index1和index2对应元素的值。*/int[] arr = {12, 121, 42, 65, 99, 88};transfer(arr, 0, 4);System.out.println(Arrays.toString(arr));}public static void transfer(int[] arr, int index1, int index2) {int t = arr[index1];arr[index1] = arr[index2];arr[index2] = t;}}
CalendarDemo2.java
需求:查询某个时间最近一周的信息,如何表示最近这一周的开始时间和结束时间
作业目的:熟悉Calendar类中的方法。
package hk.calendar2;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class CalendarDemo2 {public static void main(String[] args) {/*** 需求:查询某个时间最近一周的信息,如何表示最近这一周的开始时间和结束时间* 作业目的:熟悉Calendar类中的方法。*/SimpleDateFormat df = new SimpleDateFormat();df.applyPattern("yyyy-MM-dd HH:mm:ss");String dateStr="2022-03-07 19:18:26";Calendar cal = Calendar.getInstance();cal.set(Calendar.HOUR_OF_DAY,23);cal.set(Calendar.MINUTE,59);cal.set(Calendar.SECOND,59);Date endDate =cal.getTime();System.out.println("endDate="+endDate);cal.add(Calendar.SECOND,1);cal.add(Calendar.DAY_OF_MONTH,-7);Date beginDate =cal.getTime();System.out.println("beginDate="+beginDate);}}
三、 拓展练习(选做)
PrimeNumberDemo.java
需求:请输出1-100以内最大的五个质数(质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数)。
思路:
(1)一个数num和[2,num)这个范围的数进行对比,如果能被整除就不需要进行对比
(2)5个数,那么需要我们定义一个计数器,来记录符合要求的个数
(3)最大的需要我们倒着循环
FallDemo.java
需求:在main方法中实现如下功能并打印结果:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

