了解Date类
我举一个示例
while(true) {//循环跑
Date d=new Date();//创建Date类的对象
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");+//SimpleDateFormat是DateFormat的子类,DateFormat是Format的子类
Thread.sleep(1000);//当前线程沉睡一秒
System.out.println(s.format(d));//二十四小时制时间
}
/*SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS");
System.out.println(sdf.format(d));//十二小时制时间*/
/*SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
System.out.println(sd.format(d));//二十四小时制时间*/
//它两的区别就是一个大写H,一个小写h
代码运行起来就是当前时间在一秒秒的跑
比如:
2021-11-13 12:31:35:639
2021-11-13 12:31:36:687
2021-11-13 12:31:37:691
.......
格式就是年-月-日-时-分-秒-毫秒
获取时间的标准格式是:yyyy-MM-dd HH:mm:ss:SSS
再看这个示例
//日期的标准格式yyyy-MM-dd HH:mm:ss:SSS
Date d=new Date();//创建Date对象
Thread.sleep(2000);//当前线程沉睡两秒
Date d1=new Date();//
System.out.println(d.after(d1));//返回值是boolean类型
//after 判断一个日期是否在另一个日期之后
System.out.println(d.before(d1));//返回值是boolean类型
//before 判断一个日期是否在另一个日期之前
SimpleDateFormat myFmt = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒SSS毫秒");
System.out.println(myFmt.format(new Date()));//打印当前日期
了解Calendar类
再写一个示例
//它是实例化对象,不能new
Calendar cal=Calendar.getInstance();
System.out.println(cal.get(Calendar.YEAR));//这个是获取年
//获取月份注意+1
System.out.println(cal.get(Calendar.MONTH)+1);//获取月份+1是因为米国人月份和咱们不一样
System.out.println(cal.get(Calendar.DATE));//获取日
System.out.println(Calendar.PM);//这个PM就获取上午下午,返回值是0或1
//set修改时间
cal.set(Calendar.YEAR, 2022);//,逗号后面的是修改的时间
cal.set(Calendar.MONTH, 11);//一样的
//get获取时间
System.out.println(cal.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.MONTH)+1);
System.out.println(cal.get(Calendar.WEEK_OF_YEAR));
//yyyy-MM-dd HH:mm:ss EEEE是星期几
SimpleDateFormat sdff=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEEE");
System.out.println(sdff.format(cal.getTime()));
掌握Math类常用方法
//Math
System.out.println(Math.ceil(3.14));//ceil 向上取整 4
System.out.println(Math.abs(-3));//abs 求绝对值 3
System.out.println(Math.round(3.14));//round 四舍五入,取整 3
System.out.println(Math.floor(3.14));//floor 向下取整 3
System.out.println(Math.max(30,Math.max(10, 9)));//max求最大值,这个可以嵌套使用
System.out.println(Math.min(5,Math.min(10, 9)));//min求最小值,这个可以嵌套使用
System.out.println(Math.sqrt(3));//开根号
System.out.println(Math.pow(2, 5));//求次方
掌握Random类常用方法
//Random
Math.random(); //获取随机数大于0 小于1 [0-1]
System.out.println(Math.random());
Random ran=new Random();
//随机获取一个int类型随机数
System.out.println(ran.nextInt());//取值范围是int的取值范围
//获取指定范围的随机数
System.out.println(ran.nextInt(100));//设置随机范围0-100
System.out.println(ran.nextBoolean());//boolean类型也可以随机
了解BigDecimal类
//BigDecimal
int a=10;
int b=10;
//为了防止计算精度失真,通常我们把基本数据类型封装BigDecimal后来进行计算
BigDecimal ba=new BigDecimal(a);
BigDecimal bb=new BigDecimal(b);
System.out.println(ba.add(bb));//add加法
System.out.println(ba.subtract(bb));//subtract减法
System.out.println(ba.multiply(bb));//multiply乘法
System.out.println(ba.divide(bb,BigDecimal.ROUND_HALF_UP));//divide除法
掌握类型与对象的转换
package Z.Kbzl;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Liti {
// format方法可以将date型的数据转换成特定的String型字符串
public static void main(String[] args) {
SimpleDateFormat myFmt = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat myFmt1 = new SimpleDateFormat("yy/MM/dd HH:mm");
SimpleDateFormat myFmt2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 等价于now.toLocaleString()
SimpleDateFormat myFmt3 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
SimpleDateFormat myFmt4 = new SimpleDateFormat("一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
Date now = new Date();
System.out.println(myFmt.format(now));//format方法可以将date型的数据转换成特定的String型字符串
System.out.println(myFmt1.format(now));
System.out.println(myFmt2.format(now));
System.out.println(myFmt3.format(now));
System.out.println(myFmt4.format(now));
System.out.println(now.toGMTString());
System.out.println(now.toLocaleString());
System.out.println(now.toString());
}
}
这个你们自己去敲出来运行下就懂了.
安排几道练习题
//用随机数做一个猜数字的游戏
Scanner scan=new Scanner(System.in);//键盘输入
Random ran=new Random();//随机数
int a=ran.nextInt(100);//设置范围
do {
System.out.println("请输入你要猜的数字");
int s=scan.nextInt();//输入数字
if(s>a) {
System.out.println("数字大了");
}
if(s<a) {
System.out.println("数字小了");
}
if(s==a) {
System.out.println("猜对了");
break;
}
}while(true);
如何去做一个淘宝订单号?
//第一种写法
Date d=new Date();
Random ran=new Random();//随机数
int a=ran.nextInt((899999)+100000);//这是范围
SimpleDateFormat myFmt = new SimpleDateFormat("yyyyMMddHHmmss"+a);
System.out.println("淘宝订单号"+myFmt.format(d));
//第二种方法
for (int i = 0; i <6; i++) {
System.out.print(ran.nextInt(10));//永远都是6位
//重复的几率也是百万分之一 10的6次方次=1000000
}
//不过通常我们都写一个封装方法
public static String getOrderNum() {
//static注意,这是静态方法,主类可以直接打点调用
//淘宝订单号
StringBuilder sb=new StringBuilder();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");//当前日期
sb.append(sdf.format(new Date()));
Random r=new Random();//随机数
for (int i = 0; i <6; i++) {
sb.append(r.nextInt(10));
}
return sb.toString();//返回日期加6位随机数
}
//然后测试再mian函数里用类名打点调用就行了.
再写一个闹钟程序,时间到了就滴滴滴报警

Calendar cal=Calendar.getInstance();
//set修改时间
cal.set(Calendar.HOUR_OF_DAY,9);
cal.set(Calendar.MINUTE,47);
cal.set(Calendar.SECOND,59);
String p= new SimpleDateFormat("HH:mm:ss").format(cal.getTime());//修改完就是设置的时间
while(true) {//循环跑
Date d=new Date();//时间
SimpleDateFormat pp=new SimpleDateFormat("HH:mm:ss");//当前时间
System.out.println("当前时间"+pp.format(d));
Thread.sleep(1000);//当前线程沉睡一秒
if(pp.format(d).equals(p)) {
System.out.println("闹钟时间"+p);
System.out.println("闹钟响了.....滴滴滴滴");
break;
}
}
代码执行结果如下:
挺好玩的,你们可以自己敲一下试试.
记得要看思维导图!!!
本文共 879 个字数,平均阅读时长 ≈ 3分钟
评论 (0)