JavaSE学习笔记-Day10

今天把常用类的内容结束!

一.时间处理相关类(Date,DateFormat、SimpleDateFormat,Calendar)

  1. Date类
    java.util包中有一个Date类,它的对象表示一个特定的瞬间,精确到毫秒。Date类的很多成员都已经过时了(被其他类的成员替代)。
    在这里插入图片描述
    再来看看Date类的构造方法:
    在这里插入图片描述
    测试一下:
package cn.zjb.test;

import java.util.Date;

/**
 * 测试时间相关类
 * @author 张坚波
 *
 */
public class TestDate {
	public static void main(String[] args) {
		
		Date d =new Date();
		System.out.println(d);
		
		Date d2=new Date(1000L);
		System.out.println(d2);
		
	}
}

运行结果如下:
在这里插入图片描述

无参构造器是当前计算机的时间。
第二个结果和构造方法说明差了8小时,是因为时差的关系,内部的标准是根据格林尼治标准时间(GMT)定义的。参数1000代表1000ms。
我们看到,直接打印对象不是输出地址而是具体内容,这种的原因都是因为该类重写了toString()方法。

Date类常用方法:
1)成员方法: long getTime()
说明:返回一个与标准值差的毫秒数。
在这里插入图片描述
测试:

		Date d =new Date();
		System.out.println(d.getTime()); //结果是: 1581316498267

2)其他成员方法: boolean after(Date when)、 boolean before(Date when)、boolean equals(Object obj)
在这里插入图片描述

  1. DateFormat类和SimpleDateFormat类
    java.text.DateFormat类是一个把时间对象转化成指定格式的字符串或把指定格式的字符串转化成时间对象的类(字符串和日期的相互解析转化),这个类是抽象类:在这里插入图片描述
    抽象类我们就不具体看了,直接来看其子类java.text.SimpleDateFormat类。先来看看构造方法:
    在这里插入图片描述
    我们也知道不可能所有字符串都能变成日期格式,那么这个字符串的定义规则是什么呢:
    在这里插入图片描述
    具体用法如下:在这里插入图片描述

最常见的形式:"yyyy-MM-dd HH:mm:ss"对应着2020-02-10 15:02:00 。

举例:

	SimpleDateFormat sdf =new SimpleDateFormat("yyyy年MM月dd'day' HH:mm:ss");
	//代表着日期的格式,如2020年02月10day 15:08:47(具体日期还要有Date类对象)

那么我们怎么将一个日期解析成字符串对象用以打印呢?
这就要用到父类DateFormat的成员方法:final String format(Date date)
说明:将日期格式化成日期字符串。
在这里插入图片描述
举例:

		SimpleDateFormat sdf =new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss''"); 
		System.out.println(sdf.format(new Date()));//2020年02月10日 15:24:45'

那么我们又怎么将一个字符串对象转换成日期呢?
这还要用到父类DateFormat的成员方法:Date parse(String source)
说明:从给定字符串的开始解析文本以生成日期,必须是以构造方法定义的格式的字符串,格式不对就会抛出异常。 这个方法有异常处理,先不管。
在这里插入图片描述
举例:

package cn.zjb.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
 * 测试时间相关类
 * @author 张坚波
 *
 */
public class TestDate {
	public static void main(String[] args) throws ParseException {
		
		SimpleDateFormat sdf =new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); 
		System.out.println(sdf.parse("2000年1月1日 00:00:00")); //Sat Jan 01 00:00:00 CST 2000
		System.out.println(sdf.format(sdf.parse("2000年1月1日 00:00:00"))); //2000年01月01日 00:00:00
	
	}
}

  1. Calendar类
    java.util.Calendar 类叫日历类是一个抽象类,它的很多成员代替了Date类的很多方法,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示和计算。
    GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
    在这里插入图片描述
    本来抽象类是不能直接创建对象使用的,但是Calendar类十分特殊,它有一个静态方法叫static Calendar getInstance(),是可以返回一个其子类对象给父类引用。所以我们有时不必要看其子类了。
    在这里插入图片描述
    举例:
		Calendar c=Calendar.getInstance();
		System.out.println(c);
		/*结果:java.util.GregorianCalendar[time=1581321141168,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=1,WEEK_OF_YEAR=7,WEEK_OF_MONTH=3,DAY_OF_MONTH=10,DAY_OF_YEAR=41,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=52,SECOND=21,MILLISECOND=168,ZONE_OFFSET=28800000,DST_OFFSET=0]
		*显然重写了toString()方法。
		*/

学完这个我们先来了解一下Calendar类的一些静态变量:
YEAR MONTH DATE HOUR MINUTE SECOND MONDAY JANUARY ···

注意:
这里的星期对应着1-7,即1表示周日,以此类推。
这里月份对应的数字是0-11,即0表示一月,以此类推。

设置日历类对象的年月日,可以用重载的成员方法 void set(…):在这里插入图片描述
举例:

	c.set(Calendar.YEAR,2000); //逐个更改
	c.set(2000,1,1);

通过成员方法: int get(int field) 来获得相应信息。
在这里插入图片描述
举例:

package cn.zjb.test;

import java.util.Calendar;

/**
 * 测试时间相关类
 * @author 张坚波
 *
 */
public class TestDate {
	public static void main(String[] args)  {
		
		Calendar c=Calendar.getInstance();
		System.out.println(c.get(Calendar.YEAR)); //2020
		c.set(Calendar.YEAR,2000); 
		System.out.println(c.get(Calendar.YEAR)); //2000
		c.set(1970,1,1);
		System.out.println(c.get(Calendar.YEAR)); //1970
		System.out.println(c.get(Calendar.MONTH)); //1
		System.out.println(c.get(Calendar.DATE)); //1
		
	}
}

二. Math类

java.lang.Math提供了一系列静态方法用于科学计算,它也是功能性的类和Arrays类一样(但太常用了所以还在lang包中),它没有构造方法。

Math类的静态属性:
在这里插入图片描述
Math类常用静态方法:

  1. 重载的静态方法,用于求绝对值:abs(…) 在这里插入图片描述
  2. 一系列静态方法求三角函数值: cos() 、acos() 、sin()···
    在这里插入图片描述在这里插入图片描述
  3. 其他常见的静态方法:
    在这里插入图片描述

三. Scanner类

敲System.out.println();这行代码不知道打了多少遍了,老是输出打印的,无感了,我想用键盘输入内容了!来吧,学习下Scanner类!

Scanner类位于java.util包中,需要手动导包。

先看看Scanner类的构造器:
在这里插入图片描述
哦吼,完全不知道再说什么,算了百度一下。
嗯,现阶段从键盘输入,传的参数就是System.in:Scanner sc=new Scanner(System.in);

那怎么将这个键盘输入值赋给对应数据类型的变量呢?

在Java中,认为键盘输入的东西全部是字符串,用String next()方法给对应变量赋值:在这里插入图片描述
测试一下:

package cn.zjb.test;

import java.util.Scanner;

/**
 * 测试键盘输入类
 * @author 张坚波
 *
 */
public class TestScanner {
	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in); //只有一个输入,匿名对象比较合适吧
		String str=sc.next();
		System.out.println(str);
	}
}

运行结果:
在这里插入图片描述
Bang!那么怎么赋值给其他类型的变量呢?用其他对应的方法!比如赋给int的,就叫nextInt(),其他的就叫nextXXX()的:

这些nextXXX()方法内部就是实现了数据类型转化。

package cn.zjb.test;

import java.util.Scanner;

/**
 * 测试键盘输入类
 * @author 张坚波
 *
 */
public class TestScanner {
	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
		int num=sc.nextInt();
		double num2=sc.nextDouble();
		System.out.println(num);
		System.out.println(num2);
	}
}

四. Random类

产生随机数是常见要求,在Java中产生随机数用java.util.Random 类实现。

导完包就要看看Random类的构造器了:
在这里插入图片描述
创建完对象后就可以使用成员方法了,再来瞅瞅,哪些方法可以产生随机数:
在这里插入图片描述
其他数据类型的也类似,但是只有int能限制范围。举个例子:

package cn.zjb.test;

import java.util.Random;

/**
 * 测试随机数的生成
 * @author 张坚波
 *
 */
public class TestRandom {
	public static void main(String[] args) {
		Random r=new Random();
		System.out.println(r.nextInt());
		System.out.println(r.nextInt(10)); //老规矩:左闭右开
		System.out.println(r.nextDouble());
	}
}

结果是啥不重要。

五.File类

java.io.File类:代表文件和目录。 在开发中,读取文件、生成文件、删除文件、修改文件的属性时经常会用到本类。

File类的构造器:在这里插入图片描述
以pathname为路径创建File对象,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
举例:

package cn.zjb.test;

import java.io.File;
import java.io.IOException;

/**
 * 测试文件类
 * @author 张坚波
 *
 */
public class TestFile {
	public static void main(String[] args) throws IOException {
		
        File f = new File("a.txt"); //相对路径:默认放到user.dir目录下面
        f.createNewFile();//创建文件
        File f2 = new File("d:/b.txt");//绝对路径
        f2.createNewFile();
		
	}
}

异常问题接下来学,先不管啦。

结果:
在这里插入图片描述
Java_Learning是当前项目文件夹。
在这里插入图片描述
File类常用方法:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值