一、知识点(必做):
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"));// false
System.out.println("12345678".matches("\\d"));// false
System.out.println("12345678".matches("\\d*"));// true
System.out.println("1234".matches("\\d{5,10}"));// false
System.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));// false
System.out.println("13712345678".matches(regex1));// true
// 判断一个字符串是否是18位身份证号码
String regex2 = "\\d{17}[[0-9]X]";
System.out.println("511123200110101234".matches(regex2));// true
System.out.println("51112320011010123X".matches(regex2));// true
System.out.println("51112320011010123S".matches(regex2));// false
// 判断一个字符串是否6到16位,且第一个字必须为字母
String regex3 = "^[a-zA-Z]\\w{5,15}$";
System.out.println("will".matches(regex3));// false
System.out.println("17will".matches(regex3));//false
System.out.println("will17willwillwill".matches(regex3));//false
System.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次反弹多高?