第九章 Java 常用类

9.1 包装类
        Java是一种面向对象的语言,但在Java中不能定义基本数据类型的对象,为了能将基本数据类型视为对象进行处理,Java提出了包装类的概念,它主要是将基本数据类型封装在包装类中,如int型数值的包装类Integer,boolean型的包装类Boolean等,这样便可以把这些基本数据类型转换为对象进行处理。Java中的包装类及其对应的基本数据类型如下表所示。
                                               

                                                                         
                                                                包装类及其对应的基本数数据类型

包装类对应基础数据类型
Bytebyte
lnteger

int

Float float
Characterchar
Shortshort
Longlong
Doubledoub;e
Boolean boolean

1.Integer 类

构造方法

Integer 类有以下两种构造方法。

1)Integer (int number)
该方法以一个int型变量作为参数来获取Integer对象。
例如,以int型变量作为参数创建Integer对象,代码如下:

Integer number = new Integer(7);

2)Integer(String str):
该方法以一个String型变量作为参数来获取Integer对象。

例如,以String型变量作为参数创建Integer对象,代码如下:

Integer number = new Integer("45");

注意:
        如果要使用字符串变量创建 Integer 对象,字符串变量的值一定要要是数值型的,如"123",否则将会抛出 NumberFormatException 异常。

常用方法

                                         llnteger 类的常用方法

方法返回值工能描述
valueOf(String str)Integer返回保存指定的String 值的Integer 对象
parselnt(String str)int返回包含在由 str 指定的字符串中的数字的等价整数值
toStringOString返回一个表示该Integer 值的 String对象(可以指定进制基数
toBinaryString(int i)String以二进制无符号整数形式返回一个整数参数的字符串表示形式 

toHexString(int i)
String以十六进制无符号整数形式返回一个整数参数的字符串表示形式
toOctalString(int i)String以八进制无符号整数形式返回一个整数参数的字符串表示形式
equals(Object IntegerObj)boolean比较此对象与指定的对象是否相等
intValueint以int 型返回此 Integer 对象
shortValue()short以short 型返回此 Integer 对象 
byteValue()byte以byte 类型返回此 Integer 的值 
compareTo(IntegeranotherIntegerint在数字上比较两个Integer 对象。如果这两个值相等,则返回0;如果调用对象的数值小于anotherInteger的数值,则返回负值;如果调用对象的数值大于anotherInteger的数值,则返回正值
package nine1;
 
public class Demo {
	public static void main(String[] args) {
		int num = Integer.parseInt("456");// 将字符串转换为int类型
		Integer iNum = Integer.valueOf("456");// 通过构造函数创建一个Integer对象
		System.out.println("int数据与Integer对象的比较:" + iNum.equals(num));
		String str2 = Integer.toBinaryString(num);// 获取数字的二进制表示
		String str3 = Integer.toHexString(num);// 获取数字的十六进制表示
		String str4 = Integer.toOctalString(num);// 获取数字的八进制表示
		String str5 = Integer.toString(num, 15);// 获取数字的十五进制表示
		System.out.println("456的二进制表示为:" + str2);
		System.out.println("456的十六进制表示为:" + str3);
		System.out.println("456的八进制表示为:" + str4);
		System.out.println("456的十五进制表示为:" + str5);
		System.out.println("圆周率π的值为:" + Math.PI);
		System.out.println("自然对数底数e的值为:" + Math.E);
	}
}

结果

常量

   Integer 类包含以下 4 个常量。

MAX_VALUE:值为 231-1 的常量,它表示 int 类型能够表示的最大值。
MIN_VALUE:值为 -231 的常量,它表示 int 类型能够表示的最小值。
SIZE:用来以二进制补码形式表示 int 值的比特位数。
TYPE:表示基本类型 int 的 Class 实例。

 下面的代码演示了 Integer 类中常量的使用。

package nine2;
 
public class GetCon {// 创建类GetCon
	public static void main(String args[]) { // 主方法
		int maxint = Integer.MAX_VALUE; // 获取Integer类的常量值
		int minint = Integer.MIN_VALUE;
		int intsize = Integer.SIZE;
		System.out.println("int类型可取的最大值是:" + maxint); // 将常量值输出
		System.out.println("int类型可取的最小值是:" + minint);
		System.out.println("int类型的二进制位数是:" + intsize);
	}
 
}

结果’

2.Double 类
        Double 类和Float 类是对double、float基本类型的封装,它们都是Number类的子类,都是对小数进行操作,所以常用方法基本相同,本节将对Double类进行介绍。对于Float类可以参考Double类的相关介绍。
        Double类在对象中包装一个基本类型为 double的值,每个Double类的对象都包含一个double类型的字段。此外,该类还提供多个方法,可以将 double 转换为 String,将 String 转换为 double,也提供了其他一些处理 double 时有用的常量和方法。

构造方法
Double类提供了以下两种构造方法来获得Double 类对象。

1)Double(double value)
基于double 参数创建 Double 类对象。
例如,以int型变量作为参数创建 Double对象,代码如下:
 

Double number = newDouble(3.14);

2)Double(String str)
该方法以一个 String 型变量作为参数来获取 Double 对象。
例如,以String型变量作为参数创建 Double对象,代码如下:

Double number = new Double("3.14");

常用方法

                                                          Double类类的常用方法

 
下面通过一个实例演示 Double类的常用方法的使用。
        创建一个useDouble类,其中首先使用Double类的valueOf方法创建一个Double对象然后使用 Double 类的常用方法对该对象进行操作,并查看它们的显示结果。代码如下:

package nine3;
 
public class useDouble {
	public static void main(String[] args) {
		Double dNum = Double.valueOf("3.14"); // 通过构造函数创建一个Integer对象
		System.out.println("3.14是否为非数字值:" + Double.isNaN(dNum.doubleValue()));// 判断是否为非数字值
		System.out.println("3.14转换为int值为:" + dNum.intValue());// 转换为int类型
		System.out.println("值为3.14的Double对象与3.14的比较结果:" + dNum.equals(3.14));// 判断大小
		System.out.println("3.14的十六进制表示为:" + Double.toHexString(dNum));// 转换为十六进制
	}
}

结果

常量

        Double 类主要提供了以下常量:

1)MAX EXPONENT:返回int值,表示有限 double 变量可能具有的最大指数。(2)MIN EXPONENT:返回int值,表示标准化 double变量可能具有的最小指数。
3)NEGATIVE INFINITY:返回 double值,表示保存 double 类型的负无穷大值的常量。

4)POSITIVE INFINITY:返回 double值.,表示保存 double 类型的正无穷大值的常量
 

3.Boolean 类
        Boolean类将基本类型为boolean的值包装在一个对象中。一个Boolean类型的对象只包含一个类型为boolean的字段。此外,此类还为boolean和String的相互转换提供了许多方法,并提供了处理boolean时非常有用的其他一些常量和方法。
 

构造方法
        Boolean类提供了以下两种构造方法来获得Boolean类对象。

1)Boolean(boolean value)
该方法创建一个表示value 参数的Boolean 对象。
例如,创建一个表示value参数的Boolean对象,代码如下:
 

Boolean b=new Boolean(true);

2)Boolean(String str)
该方法以String变量作为参数创建 Boolean 对象。如果String参数不为null且在忽略大小写时等于true,则分配一个表示true值的Boolean 对象,否则获得一个false 值的Boolean 对象。
例如,以String变量作为参数,创建Boolean对象。代码如下:
 

Boolean bool = new Boolean("ok");

常用方法

                                                        Boolean类的的常用方法


 

package nine4;
 
public class GetBoolean {			//创建类
	public static void main(String args[]) { // 主方法
		Boolean b1 = new Boolean(true); // 创建Boolean对象
		Boolean b2 = new Boolean("ok"); // 创建Boolean对象
		System.out.println("b1:" + b1.booleanValue());
		System.out.println("b2:" + b2.booleanValue());
	}
}

结果

常量

        Boolean提供了以下3个常量:

1)TRUE:对应基值 true的Boolean对象。

2)FALSE:对应基值false的Boolean对象。

3)TYPE:基本类型boolean的Class对象

4.Character 类

构造方法

常用方法

                                              Character 类的常用方法

package nine5;
 
public class UpperOrLower {			//创建类
	public static void main(String args[]) { // 主方法
		Character mychar1 = new Character('A'); // 声明Character对象
		Character mychar2 = new Character('a'); // 声明Character对象
		if (Character.isUpperCase(mychar1)) {// 判断是否为大写字母
			System.out.println(mychar1 + "是大写字母 ");
			System.out.println("转换为小写字母的结果: " + Character.toLowerCase(mychar1));// 转换为小写
		}
		if (Character.isLowerCase(mychar2)) {// 判断是否为小写字母
			System.out.println(mychar2 + "是小写字母");
			System.out.println("转换为大写字母的结果: " + Character.toUpperCase(mychar2));// 转换为大写
		}
	}
}

 结果

        Character类提供了大量表示特定字符的常量,例如:

1)CONNECTOR_PUNCTUATION:返回 byte 型值,表示Unicode规范中的常规类别“Pc”。
2)UNASSIGNED:返回 byte 型值,表示 Unicode 规范中的常规类别“Cn”。
3)TITLECASE LETTER:返回 byte 型值,表示Unicode规范中的常规类别“Lt”。
 

5.Number 类
        对于数值型的包装类,它们有一个共同的父类--Number 类,该类是一个抽象类,它是Byte、Integer、Short、Long、l Float和Double类的父类,其子类必须提供将表示的数值转换为byte、int、short、long、float和do uble 的方法。例如,doubleValue()方法返回双精度值,floatValue()方法返回浮点值。
        Number类的方法分别被 Number 的各子类所实现, 也就是说,在Number类的所有子类中都包含以上这几种方法。

                                                 数值型包装类的共有方法                    

         

9.2 Math 类
 

1.Math 类概述
        Math 类表示数学类,于java.lang 包中,由系统默认调用,该类中提供了众多数学函数方法,主要包括三角函数方法,指数函数方法,取整函数方法,取最大值、最小值以及绝对值函数方法,这些方法都被定义为 static 形式,因此在程序中可以直接通过类名进行调用。使用形式如下:

Math.数学方法

  在Math类中除了函数方法之外还存在一些常用的数学常量,如 PI、E等,这些数学常量作为 Math 类的成员变量出现,调用起来也很简单。可以使用如下形式调用:

Math.PI //表示圆周率 PI的值 
Math.E //表示自然对数底数e的值 


例如,下面代码用来分别输出PI和E的值。代码如下: 

System.out.println("圆周率π的值为:"+ Math.PI);
System.out.println("自然对数底数e的值为:"+ Math.E);

上面代码的输出结果为:

圆周率π的值为:3.141592653589793
自然对数底数e的值为:2718281828459045

2.常用数学运算法

三角函数方法

     

                                                  Math 类中的三角函数方法

以上每个方法的参数和返回值都是 double 型的,将这些方法的参数的值设置为 double 型是有一定道理的,参数以弧度代替角度来实现,其中1°等于π/180 弧度,所以 180°可以使用元弧度来表示。除了可以获取角的正弦、余弦、正切、反正弦、反余弦、反正切之外,Math 类还提供了角度和弧度相互转换的方法toRadians()和toDegrees()。但需要注意的是,角度与弧度的转换通常是不精确的。
 

package nine6;
 
public class TrigonometricFunction {//创建类
	public static void main(String[] args) {//主方法
		// 取90度的正弦
		System.out.println("90度的正弦值:" + Math.sin(Math.PI / 2));
		// 取0度的余弦
		System.out.println("0度的余弦值:" + Math.cos(0));
		// 取60度的正切
		System.out.println("60度的正切值:" + Math.tan(Math.PI / 3));
		// 取2的平方根与2商的反正弦
		System.out.println("2的平方根与2商的反弦值:"
				+ Math.asin(Math.sqrt(2) / 2));
		// 取2的平方根与2商的反余弦
		System.out.println("2的平方根与2商的反余弦值:"
				+ Math.acos(Math.sqrt(2) / 2));
		System.out.println("1的反正切值:" + Math.atan(1)); // 取1的反正切
		// 取120度的弧度值
		System.out.println("120度的弧度值:" + Math.toRadians(120.0));
		// 取π/2的角度
		System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI / 2));
	}
}

结果

 指数函数方法         

                                               Math类中与指数相关的函数方法        

 
指数运算包括求方根、取对数以及求n次方的运算。

package nine7;
 
public class ExponentFunction {//创建类
	public static void main(String[] args) {//主方法
		// 取e的2次方
		System.out.println("e的平方值:" + Math.exp(2));
		// 取以e为底2的对数
		System.out.println("以e为底2的对数值:" + Math.log(2));
		// 取以10为底2的对数
		System.out.println("以10为底2的对数值:" + Math.log10(2));
		System.out.println("4的平方根值:" + Math.sqrt(4)); // 取4的平方根
		System.out.println("8的立方根值:" + Math.cbrt(8)); // 取8的立方根
		System.out.println("2的2次方值:" + Math.pow(2, 2)); // 取2的2次方
	}
}

结果

取整函数方法

在具体的问题中,取整操作使用也很普遍, 所以Java在Math类中添加了数字取整方法。

                                                   Math 类中常用的取整方法

package nine8;
 
public class IntFunction {//创建类
	public static void main(String[] args) {//主方法
		// 返回第一个大于等于参数的整数
		System.out.println("使用ceil()方法取整:" + Math.ceil(5.2));
		// 返回第一个小于等于参数的整数
		System.out.println("使用floor()方法取整:" + Math.floor(2.5));
		// 返回与参数最接近的整数
		System.out.println("使用rint()方法取整:" + Math.rint(2.7));
		// 返回与参数最接近的整数
		System.out.println("使用rint()方法取整:" + Math.rint(2.5));
		// 将参数加上0.5后返回最接近的整数
		System.out.println("使用round()方法取整:" + Math.round(3.4f));
		System.out.println("使用round()方法取整:" + Math.round(3.5f));
		// 将参数加上0.5后返回最接近的整数,并将结果强制转换为长整型
		System.out.println("使用round()方法取整,并将结果强制转换为长整型:" + Math.round(2.5));
	}
}

结果

 取最大值、最小值、绝对值函数方法

                                       Math 类中其他的常用数据操作方法

package nine9;
 
public class AnyFunction {//创建类
	public static void main(String[] args) {//主方法
		
		System.out.println("4和8较大者:" + Math.max(4, 8)); // 取两个参数的最大值
		System.out.println("4.4和4较小者:" + Math.min(4.4, 4)); // 取两个参数的最小值
		System.out.println("-7的绝对值:" + Math.abs(-7)); // 取参数的绝对值
	}
}

结果

9.3 随机数

1.Math.random()方法
        在Math 类中存在一个random(方法,用于生成随机数字,该方法默认生成大于等于0.0小于 1.0的double 型随机数,即0<-Math.randomO<1.0,虽然Math.random()方法只可以生成0~1之间的 double型数字,但只要在Math.random()语句上稍加处理,就可以使用这个方法生成任意范围的随机数。

 
/**
 * 猜数字游戏
 */
package nine10;
 
import java.util.Scanner;
 
public class NumGame {
	public static void main(String[] args) {
		System.out.println("——————猜数字游戏——————\n");
		int iNum;
		int iGuess;
		Scanner in = new Scanner(System.in);// 创建扫描器对象,用于输入
		iNum = (int) (Math.random() * 100);// 生成1到100之间的随机数
		System.out.print("请输入你猜的数字:");
		iGuess = in.nextInt(); // 输入首次猜测的数字
		while ((iGuess != -1) && (iGuess != iNum))// 判断输入的数字不是-1或者基准数
		{
			if (iGuess < iNum)// 若猜测的数字小于基准数,则提示用户输入的数太小,并让用户重新输入
			{
				System.out.print("太小,请重新输入:");
				iGuess = in.nextInt();
			} else// 若猜测的数字大于基准数,则提示用户输入的数太大,并让用户重新输入
			{
				System.out.print("太大,请重新输入:");
				iGuess = in.nextInt();
			}
		}
		if (iGuess == -1)// 若最后一次输入的数字是-1,循环结束的原因是用户选择退出游戏
		{
			System.out.println("退出游戏!");
		} else// 若最后一次输入的数字不是-1,用户猜对数字,获得成功,游戏结束
		{
			System.out.println("恭喜你,你赢了,猜中的数字是:" + iNum);
		}
		System.out.println("\n———————游戏结束———————");
	}
}

结果

       除了随机生成数字以外,使用Math类的random法还可以随机生成字符,例如,可以使用下面代码生成 a~z 之间的字符:

(char)('a'+Math.random()*('z'-'a'+1));

 
        通过上述表达式可以求出更多的随机字符,如A~Z之间的随机字符,进而推理出求任意两个字符之间的随机字符,可以使用以下语句表示:

(char)(cha1+Math.random()*(cha2-cha1+1));

在这里可以将这个表达式设计为一个方法,参数设置为随机生成字符的上限与下限。 

package nine11;
 
public class MathRandomChar {
	// 定义获取任意字符之间的随机字符
	public static char GetRandomChar(char cha1, char cha2) {
		return (char) (cha1 + Math.random() * (cha2 - cha1 + 1));
	}
 
	public static void main(String[] args) {
		// 获取a~z之间的随机字符
		System.out.println("任意小写字符" + GetRandomChar('a', 'z'));
		// 获取A~Z之间的随机字符
		System.out.println("任意大写字符" + GetRandomChar('A', 'Z'));
		// 获取0~9之间的随机字符
		System.out.println("0到9任意数字字符" + GetRandomChar('0', '9'));
	}
}

 结果

2.Random 类

        除了Math类中的random()方法可以获取随机数之外外,Java中还提供了一种可以获取随机数的方式,那就是java.util.Random类,该类表示一个随机数生成器,可以通过实例化一个Random对象创建一个随机数生成器。语法如下:

Random r=new Random();其中,r是指Random对象。

 以这种方式实例化对象时,Java编译器以系统当前时间作为随机数生成器的种子,因为每时每刻的时间不可能相同,所以生成的随机数将不同,但是如果运行速度太快,也会生成两次运行结果相同的随机数。
同时也可以在实例化Random类对象时,设置随机数生成器的种子。语法如下: 

 Random r=new Random(seedValue);

                                                   Random 类中常用的获取随机数方法

package nine12;
 
import java.text.DecimalFormat;
import java.util.Random;
import java.util.Scanner;
 
/**
 * 模拟微信抢红包功能
 */
 
public class RedBags { //创建一个RedBags类
	public static void main(String[] args) {
		System.out.println("—————————模拟微信抢红包—————————\n"); 
		Scanner sc = new Scanner(System.in); //控制台输入
		System.out.print("请输入要装入红包的总金额(元):"); 
		double total = sc.nextDouble(); //输入“红包的总金额”
		System.out.print("请输入红包的个数(个):"); 
		int bagsnum = sc.nextInt(); //输入“红包的个数”
		double min = 0.01; //初始化“红包的最小金额”
		Random random = new Random(); //创建随机数对象random
		DecimalFormat df = new DecimalFormat("###,###,###.##"); //创建DecimalFormat类的对象df,并设置格式
		for (int i = 1; i < bagsnum; i++) { //设置“循环”
			double safe = (total - (bagsnum - i) * min) / (bagsnum - i); //通过公式模拟数学中的离散模型
			double money = (double) random.nextInt((int) ((safe - min) * 100)) / 100 + min; //根据离散模型得到每个红包的金额
			total = total - money; //替换total的值
			String temp = df.format(money); //调用format()方法,对数字money格式化
			System.out.println("第" + i + "个红包:" + temp + "元"); //输出结果
		}
		String left = df.format(total); //调用format()方法,对数字total格式化
		System.out.println("第" + bagsnum + "个红包:" + left + "元"); //输出结果
		sc.close(); //关闭控制台输入
	}
}

 结果

9.4 日期时间类

1.Date 类

        Date类用于表示日期时间,它位于java.util包中,程序中使用该类表示时间时,需要使用其构造方法创建Date类的对象。 

                                               Date类的构造方法及说明

                                                      Date类的常用方法及说明

package nine13;
 
import java.util.Date;
 
public class DateTest {//创建类
	public static void main(String[] args) {//主方法
		Date date = new Date(); 				// 创建现在的日期
		long value = date.getTime(); 			// 获得毫秒数
		//输出
		System.out.println("日期:" + date);
		System.out.println("到现在所经历的毫秒数为: " + value);
	}
}

结果

         DateFormat类是日期/时间格式化子类的抽象类,它位于java.text包中,可以按照指定的格式对日期或时间进行格式化。DateFormat提供了很多类方法,以获得基于默认或给定语言环境和多种式化风格的默认日期/时间Formatter,格式化风格包括SHORT、MEDIUMLONG和FULL 等4种,分别如下:

1)SHORT:完全为数字,如 12.13.52 或 3:30pm。

2)MEDIUM:较长,如 Jan 12,1952。
3)LONG:更长,如 January 12,1952 或 3:30:32pm。
4)FULL:完全指定,如 Tuesday、April 12、1952AD 或 3:30:42pm PST。
 

         另外,使用DateFormat还可以自定义日期时间的格式。要格式化一个当前语言环境下的日期,首先需要创建DateFormat 类的一个对象,由于它是抽象类,因此可以使用其静态工厂方法 getDateInstance 进行创建。语法如下:

DateFormat df = DateFormat.getDateInstance();

  使用getDateInstance获取的是该国家/地区的标准日期格式,另外,DateFormat 类还提供了一些其他静态工厂方法,例如,使用 getTimeInstance 可获取该国家/地区的时间格式,使用 getDateTimeInstance 可获取日期和时间格式。

                                          DateFormat类的常用方法及说明


 由于DateFormat类是一个抽象类,不能用new创建实例对象,因此,除了使用getXXXInstance方法创建其对象外,还可以使用其子类,例如 SimpleDateFormat类,该类是一个以与语言环境相关的方式来格式化和分析日期的具体类,它允许进行格式化(日期->文本)、分析(文本>日期)和规范化。

package nine14;
 
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
 
public class DateFormatTest {
	public static void main(String[] args) {
		// 创建日期
		Date date = new Date();
		// 创建不同的日期格式
		DateFormat df1 = DateFormat.getInstance();
		DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE");
		DateFormat df3 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 EE", Locale.CHINA);
		DateFormat df4 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE", Locale.US);
		DateFormat df5 = new SimpleDateFormat("yyyy-MM-dd");
		DateFormat df6 = new SimpleDateFormat("yyyy年MM月dd日");
		// 将日期按照不同格式进行输出
		System.out.println("-------将日期时间按照不同格式进行输出------");
		System.out.println("按照Java默认的日期格式: " + df1.format(date));
		System.out.println("按照指定格式 yyyy-MM-dd hh:mm:ss,系统默认区域:" + df2.format(date));
		System.out.println("按照指定格式 yyyy年MM月dd日 hh时mm分ss秒,区域为中文 : " + df3.format(date));
		System.out.println("按照指定格式 yyyy-MM-dd hh:mm:ss,区域为美国: " + df4.format(date));
		System.out.println("按照指定格式 yyyy-MM-dd: " + df5.format(date));
		System.out.println("按照指定格式 yyyy年MM月dd日: " + df6.format(date));
	}
}

结果

2.Calendar 类

        Calendar提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar的getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化。使用方法如下:

Calendar rightNow = Calendar.getInstance();

注:
        由于Calendar 类是一个抽象类,不能用 new 创建实例对象,因此除了使用 getInstance 方法创建其对象外,还可以使用其子类创建对象,例如 GregorianCalendar类。

                                               Calendar类提供的常用字段及说明

                                                  
                                        Calendar类 提供的常用方法及说明

方法返回值功能描述
add(int field, int amount)void根据日历的规则,为给定的日历字段添加或减去指定的时间量
after(Object when)boolean判断之后,返回判断结果此Calendar表示的时间是否在指定Object表示的时间
before(Object when)boolean判断此Calendar表示时否指bject表示时间之前,返回判断结果 
get(int field)int返回给定日历字段的值 
getInstance()static Calendar使用默认时区和语言环境获得一个日历 
getTime()Date返回一个表示此Calendar时间值(从历元至现在的毫秒偏移量)的Date 对象
getTimeInMillis()long返回此 Calendar 的时间值,以毫秒为单位
roll(int field, boolean up)abstract void在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段
set(int field, int value)void将给定的日历字段设置为给定值
set(int year, int month, int date)

void

设置日历字段YEAR、MONTH 和DAY_OF_MONTH 的值 
set(int year, int month, int date,int hourOfDay, int minute)void设置日历字段YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_MONTH和MINUTE的值
set(int year, int month, int date,int hourOfDay, int minute, int secondvoid设置字段YEAR、MONTH、DAY_OF_MONTH、HOUR 、MINUTE 和SECOND 的值
setTime(Date date)

void

使用给定的Date 设置此 Calendar的时间
setTimeInMillis(long millis)

void

用给定的 long 值设置此 Calendar 的当前时间值
package nine15;
 
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
/**
 * 输出2022年冬奥会倒计时(暂定冬奥会举办时间为2022年2月2日)
 */
public class OlympicWinterGames { //创建OlympicWinterGames类
	public static void main(String[] args) {
		System.out.println("——————————冬奥会倒计时——————————\n"); 
		Date date = new Date(); //实例化Date
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); //创建SimpleDateFormat对象,制定目标格式
        String today = simpleDateFormat.format(date);// 调用format方法,格式化时间,转换为指定方法
        System.out.println("今天是" + today); //输出当前日期
        long time1 = date.getTime(); //计算“自 1970 年 1 月 1 日 00:00:00 至当前时间所经过的毫秒数
        Calendar calendar = Calendar.getInstance(); //使用默认时区和语言环境获得一个日历calendar
        calendar.set(2022, 2-1, 4); //设置日历calendar中的 YEAR、MONTH 和 DAY_OF_MONTH 的值
        long time2 = calendar.getTimeInMillis(); //计算“自 1970 年 1 月 1 日 00:00:00 至 2022 年 2 月 2 日所经过的毫秒数
        long day = (time2 - time1)/(24 * 60 * 60 * 1000); //计算2022 年 2 月 2 日距离当前时间的天数
        System.out.println("距离2022年“北京-张家口”冬奥会还有 " + day + " 天!");
	}
}

结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值