持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第31天,点击查看活动详情
Calendar类
概述
概述:
-
java.util.Calendar类表示一个“日历类”,可以进行日期运算。
-
日历类把和时间相关的所有值都定义为了字段,对时间的操作可以用字段的方式完成。
-
它是一个抽象类,不能创建对象,我们可以使用它的子类:java.util.GregorianCalendar类。
-
有两种方式可以获取GregorianCalendar对象:
-
直接创建GregorianCalendar对象;子类构造方法:
GregorianCalendar() -
通过Calendar的静态方法getInstance()方法获取GregorianCalendar对象【本次课使用】
-
常用方法
| 方法名 | 说明 |
|---|---|
| public static Calendar getInstance() | 获取一个它的子类GregorianCalendar对象。 |
| public int get(int field) | 获取某个字段的值。field参数表示获取哪个字段的值, 可以使用Calender中定义的常量来表示: Calendar.YEAR : 年 Calendar.MONTH :月 Calendar.DAY_OF_MONTH:月中的日期 Calendar.HOUR:小时 Calendar.MINUTE:分钟 Calendar.SECOND:秒 Calendar.DAY_OF_WEEK:星期 |
| public void set(int field,int value) | 设置某个字段的值 |
| public void add(int field,int amount) | 为某个字段增加/减少指定的值 |
| setTime(Date date) | 把Date对象转成Calendar对象 |
get方法示例
说明:DAY_OF_WEEK的范围:1--7,分别表示:"星期日","星期一","星期二",...,"星期六"。在java中,星期日是一周的第一天。
// 1 2 3 4 5 6 7
// 日 一 二 三 四 五 六
public class Demo {
public static void main(String[] args) {
//1.获取一个GregorianCalendar对象
Calendar instance = Calendar.getInstance();//获取子类对象
//2.打印子类对象
System.out.println(instance);
//3.获取属性
int year = instance.get(Calendar.YEAR);
int month = instance.get(Calendar.MONTH) + 1;//Calendar的月份值是0-11
int day = instance.get(Calendar.DAY_OF_MONTH);
int hour = instance.get(Calendar.HOUR);
int minute = instance.get(Calendar.MINUTE);
int second = instance.get(Calendar.SECOND);
System.out.println(year + "年" + month + "月" + day + "日" +
hour + ":" + minute + ":" + second);
int week = instance.get(Calendar.DAY_OF_WEEK);//返回值范围:1--7,分别表示:"星期日","星期一","星期二",...,"星期六"
// 在java中,星期日是一周的第一天
System.out.println("星期:" + method(week));
// 1 2 3 4 5 6 7
// 日 一 二 三 四 五 六
}
//把Calendar中的星期转成我们中国习惯的星期
public static String method(int week){
//创建数组
String[] arr = {"","日","一","二","三","四","五","六"};
//返回元素
return arr[week];
}
}
set和add方法示例
public class Demo {
public static void main(String[] args) {
//创建对象
Calendar c = Calendar.getInstance();
//void set(int field,int value) :设置某个字段的值
//把年改为1999
c.set(Calendar.YEAR,1999);
System.out.println("年份是:" + c.get(Calendar.YEAR)); //1999
//void add(int field,int amount):偏移(加减)某个字段的值
//把年在原来的基础上减少100年
c.add(Calendar.YEAR,-100);
System.out.println("年份是:" + c.get(Calendar.YEAR)); //1899
//请说出输出的是几?
c.set(Calendar.MONTH,4); //把月份设置为4
c.add(Calendar.MONTH,1); //把月份加1
//输出的结果是5,但是代表的是六月
System.out.println("月份是" + c.get(Calendar.MONTH));
}
}
setTime(Date date)方法演示
void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。
/*
void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。
*/
public class Test02 {
public static void main(String[] args) {
//创建日历
Calendar c = Calendar.getInstance();
//获取年
int year = c.get(Calendar.YEAR);
//没有更改c表示的内容,获取的是当前时间
System.out.println(year); //2020
//创建日期对象
Date d = new Date(3181277292010L);
System.out.println(d);
//把Date所表示的时间赋值给Calender
//void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。
c.setTime(d);
//获取年
int year2 = c.get(Calendar.YEAR);
//更改之后c表示的内容,获取的是当前时间
System.out.println(year2); //2070
}
}
Math类
概述
- java.lang.Math(类): Math包含执行基本数字运算的方法。
- 它不能创建对象,它的构造方法被“私有”了。因为他内部都是“静态方法”,通过“类名”直接调用即可。
常用方法
| 方法名 | 说明 |
|---|---|
| public static int abs(int a) | 获取参数a的绝对值: |
| public static double ceil(double a) | 向上取整 |
| public static double floor(double a) | 向下取整 |
| public static double pow(double a, double b) | 获取a的b次幂 |
| public static long round(double a) | 四舍五入取整 |
示例代码
public class Demo {
public static void main(String[] args) {
System.out.println("-5的绝对值:" + Math.abs(-5));//5
System.out.println("3.4向上取整:" + Math.ceil(3.4));//4.0
System.out.println("3.4向下取整:" + Math.floor(3.4));//3.0
System.out.println("2的8次幂:" + Math.pow(2, 8));//256.0
System.out.println("3.2四舍五入:" + Math.round(3.2));//3
System.out.println("3.5四舍五入:" + Math.round(3.5));//4
}
}
System
概述
java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。
常用方法
| 方法名 | 说明 |
|---|---|
| public static void exit(int status) | 终止当前运行的 Java 虚拟机,非零表示异常终止 |
| public static long currentTimeMillis() | 返回当前时间(以毫秒为单位) |
| static void arrayCopy() | 数组中元素的复制 |
代码演示:
public class Demo02{
public static void main(String[] args) {
//退出虚拟机
//System.exit(0);
//获取当前时间的毫秒值
long time1 = System.currentTimeMillis();
System.out.println(time1);
//Date
Date d = new Date();
long time2 = d.getTime();
System.out.println(time2);
//数组中元素的复制
int[] arr = {11,22,33,44,55,66};
int[] brr = {0,0,0,0,0,0};
/*
复制数组的方法:
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
参数:
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
*/
System.arraycopy(arr,2,brr,0,3);
//打印数组查看结果
for (int i = 0; i < brr.length; i++) {
System.out.print(brr[i] + " ");
}
// brr : 33 44 55 0 0 0
System.out.println();
System.out.println("------------------------------");
//练习
System.arraycopy(brr,0,brr,2,2);
//打印数组查看结果
for (int i = 0; i < brr.length; i++) {
System.out.print(brr[i] + " ");
}
// 33 44 33 44 0 0
}
}