Java-SE Java的内置工具类-Scanner类-Calendar类

一、关于Scanner类

C语言中存在一个scanf函数用于输入,而Java则使用Scanner类来实现从键盘输入。 标准输入(从键盘输入)格式为:

        Scanner input = new Scanner(System.in); (开启从标准设备实现输入)
        int num = input.nextInt();(从键盘输入数值给num变量。nextXxx() ,表示使用Xxx类型输入,如未有Xxx,则默认为字符串输入)

既然有开启输入就必须要有结束输入,input.close();(关闭从键盘输入),一次简单的从键盘输入数据就实现了。如果想要连续输入的话可以使用

while (input.hasNext()) {//必须为hasNext(),才可使用Ctrl + Z结束输入
			num = input.nextInt();
			System.out.println(num);
		}

while循环体里的input.hasNext()存在的作用是为了当完成输入时采用Ctrl+Z结束输入。只有input.hasNext()才可以使用Ctrl+Z结束输入。测试完整程序如下:

public static void main(String[] args) {
		Scanner input = new Scanner(System.in);//开启从标准设备实现输入
		int num = input.nextInt();//nextXxx() ,表示使用Xxx类型输入,如未有Xxx,则默认字符串输入
		System.out.println(num);
		
		while (input.hasNext()) {//必须为hasNext(),才可使用Ctrl + Z结束输入
			num = input.nextInt();
			System.out.println(num);
		}
		input.close();//关闭键盘
	}

二、关于Calendar类

Calendar类是Java中对日期处理的工具类,使用Calendar显示日期有两种方式,分别是复杂版和简单版。

对于复杂版,首先我们可以使用它的静态方法Calendar.getInstance();来得到今天的日期信息。之后则可以通过Calendar提供的get方法得到具体的日期信息并显示,如下所示:

	int year = today.get(Calendar.YEAR);
		System.out.println(year);
		int month = today.get(Calendar.MONTH);//Calendar类的month的计算从0到11月
		System.out.println(month);
		int date = today.get(Calendar.DATE);
		System.out.println(date);
        int hour = today.get(Calendar.HOUR);
        System.out.println(hour);
//		int hour = today.get(Calendar.HOUR_OF_DAY);
//		System.out.println(hour);
		int minute = today.get(Calendar.MINUTE);
		System.out.println(minute);
		int second = today.get(Calendar.SECOND);
		System.out.println(second);
		int millisecond = today.get(Calendar.MILLISECOND);//毫秒
		System.out.println(millisecond);

输出结果为:

 需要注意的点是,在Calendar类中月份的显示是从0到11的,使用Calendar可以获取到毫秒级的日期信息。对于小时而言Calendar.HOUR获取到的是12小时制的,而get(Calendar.HOUR_OF_DAY)得到的是24小时制的小时信息。

对于简单版日期显示:

SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd日 HH时mm分ss秒");//YY年的话会没有世纪信息,即只会有22年
	system.out.println(sdf.format(today.getTime()));

对于YYYY年MM月dd日 HH时mm分ss秒,如果使用YY年的话则没有世纪信息,由于月与毫秒的英文首字母均为m,则大写代表月份,小写代表毫秒。使用格式转化即可得到想要的结果:

 对于Calendar类还有一种应用是获取已知年月的最大天数,这个功能可以准确获得某年某月的最大天数,不用再计算是平年还是闰年的问题。实现如下:

year = 2010;
	month = 2;
	today.set(year, month-1, 1);//设置为二月的第一天
	int Maxday = today.getActualMaximum(Calendar.DAY_OF_MONTH);//获得二月的总天数
	System.out.println(Maxday);

        首先使用set方法设置日期为已知年月的第一天,之后利用getActualMaximum方法得到已知月份的最大天数。结果得到28,即2010年二月总共有二十八天。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值