Java13的API_JAVA基础--JAVA API常见对象(其他API)13

一、其他API

1.System类

f9694a3e3d4b5112c5da64532395addc.png

system类中的方法和成员变量都是静态的, 不需要创建System对象就可以直接使用。

1 /*

2 * 演示System的使用3 */

4 public classSystemDemo {5 public static voidmain(String[] args) {6

7 /*

8 * System类中的静态成员变量: out 和 err的区别9 * out和err都可以把需要输出的信息展示在控制台上。10 * 但是由于JVM的底层针对out和err是两种不同的实现机制11 * 在输出的时候,数据的显示先后次序并不能确定12 *13 * 建议:开发中要么全部是out,要么全部使用err14 */

15 System.out.println("你好");16 System.err.println("hello");17 //强制退出JVM

18 System.exit(0);19 //获取系统的当前时间,得到的是当前时间距离1970-1-1 0:0:0秒的时间差20 //获取到的是一个毫秒值。1秒=1000毫秒

21 System.out.println(System.currentTimeMillis());22 }23 }

结论:只要获取和系统相关的信息时就应该考虑使用System类。

2. Math类

Math:它封装了和数学运算相关的方法。

9789add9f6efc25d3ecbf3ef2fa1fee3.png

Math类中的方法都是静态的,可以通过类名直接调用。

1 /*

2 * 演示Math类3 */

4 public classMathDemo {5 public static voidmain(String[] args) {6

7 System.out.println(Math.E);8 System.out.println(Math.PI);9

10 //返回大于指定数据的最小整数

11 System.out.println(Math.ceil(4.56));12 //返回小于指定数据的最大整数

13 System.out.println(Math.floor(4.56));14 //四舍五入

15 System.out.println(Math.round(4.56));16 //0~1之间的一个随机数

17 System.out.println(Math.random());18 }19 }

3. Random类

e846db5b33ff4e13f2313957bcdf91fe.png

Random类它是专门负责产生随机数的类。

1 /*

2 * 演示随机数类3 */

4 public classRandomDemo {5 public static voidmain(String[] args) {6

7 //创建产生随机数的那个对象

8 Random r = newRandom();9

10 System.out.println(r.nextFloat());11 System.out.println(r.nextDouble());12 System.out.println(r.nextInt());13 System.out.println(r.nextBoolean());14 System.out.println(r.nextLong());15 System.out.println(r.nextInt(100));16

17 for( int i = 0 ; i < 6 ; i++){18 System.out.println(r.nextInt(6) + 1);19 }20 }21 }

4. 日期类

a. Date类

生活中有时间日期数据,在Java中也有对应的类描述这些数据。

64c5cd059b5be1a707e2b438e13925b8.png

类 Date 表示特定的瞬间,精确到毫秒。

在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。

Date类是表示时间日期数据的对象,但是这个类中的方法不利于其他国家程序员进行时间的显示等操作,其中大部分的方法已经过时,由Calendar和DateFormat类代替。

1 /*

2 * 演示Date类3 * 构造方法:4 * Date()5 * Date类中的空参数的构造方法:它的目的仅仅是将当前的时间封装成Date对象6 * Date(long date)7 * Date类中的接收long类型的整数构造方法,它的目的是将指定的一个毫秒值封装成Date对象8 * 普通的方法:9 * getTime() 获取Date对象所表示的当前时间对应的毫秒值10 * setTime(long time) 将当前Date对象对应的毫秒值修改为指定的毫秒值11 *12 * Date类中需要掌握:13 * Date对象和毫秒值之间的转换。14 * Date对象转毫秒值的作用,是为了计算2个时间之间的时间差15 * 计算出来的时间差是一个毫秒值,需要手动的转成具体的天数,或者月,或者年等数据16 *17 */

18 public classDateDemo {19 public static voidmain(String[] args) {20

21 //使用Date类中的空参数的构造方法创建Date对象

22 Date date = newDate();23 Date date2 = new Date(999900001231L);24 //date.setTime(1230L);25 //打印

26 System.out.println(date);27 System.out.println(date2);28 }29 }

b.日期时间格式化类

b.1 DataFormat类介绍

093b0391085a7590b1ab25d9ed79e221.png

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期->文本)、解析(文本->日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。

DateFormat 提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期/时间 Formatter。格式化风格包括 FULL、LONG、MEDIUM 和 SHORT。方法描述中提供了使用这些风格的更多细节和示例。

DateFormat类:它可以完成Date对象和字符串之间的转成。但是由于这个类是抽象类,不能直接去创建对象,并且这个类对日期和字符串之间的转换方式只有4种,并不能满足用户想要的格式:

1 /*

2 * 简单演示DateFormat类3 */

4 public classDataFormatDemo {5 public static voidmain(String[] args) {6

7 //获取到DateFormat 对象

8 DateFormat format =DateFormat.getInstance();9

10 //将日期对象转成字符串

11 Date d = newDate();12 String s =format.format(d);13 System.out.println(s);14

15 }16 }

b.2 SimpleDateFormat类介绍

aca6df8d12d20957896d5ded5d5ca50f.png

SimpleDateFormat:它和DateFormat功能一致。都是完成Date对象和字符串之间的转换。

SimpleDateFormat是DateFormat的子类,并且在创建SimpleDateFormat对象的时候,如何完成日期和字符串之间的转换格式书写,由开发人员自己指定。

39a9a08a672519b634651d9bc22bbfac.png

创建SimpleDateFormat对象时如何指定转换的格式:

a78f36c2e046750e19f853965da9295c.png

创建SimpleDateFormat对象指定的格式:

年使用yyyy

月MM

天dd

时HH

分mm

秒ss

中间的分隔符由程序员自己指定。

解析日期:将字符串形式的日期数据转成Date对象 使用的SimpleDateFormat类中的parse方法

格式化日期:将Date对象转成字符串形式的日期数据,使用SimpleDateFormat类中的format方法

1 /*

2 * 演示SimpleDateFormat类3 */

4 public classSimpleDataFormatDemo {5 public static void main(String[] args) throwsParseException {6 method3();7 }8 /*

9 * 如下的2个字符串形式的时间数据,计算它们的时间差10 * "2016年01月02日 10:27:14"11 * "2019-11/22 10:27:14"12 * 计算它们之间相隔多少天?13 */

14 public static void method3() throwsParseException {15

16 String s = "2016年01月02日 10:27:14";17 String s2 = "2016-01/03 10:27:14";18

19 //需要定义2个不同的格式器对象

20 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");21 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM/dd HH:mm:ss");22

23 //解析

24 Date d =sdf.parse(s);25 Date d2 =sdf2.parse(s2);26

27 //需要获取不同的Date对象对应的毫秒值

28 long t =d.getTime();29 long t2 =d2.getTime();30

31 //计算时间差

32 long day = Math.abs((t - t2) / 1000 / 60 / 60 / 24);33 System.out.println(day);34 }35 //将字符串数据转成Date对象

36 public static void method2() throwsParseException {37

38 String s = "2016年01月02日 10:27:14";39

40 //创建格式器对象

41 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");42

43 //将字符串转成Date对象

44 Date d =sdf.parse(s);45

46 System.out.println(d);47 }48 //将日期对象转成字符串数据

49 public static voidmethod() {50 //创建格式器对象

51 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");52

53 //将日期对象转成字符串

54 Date d = newDate();55 String s =sdf.format(d);56 System.out.println(s);57 }58 }

3. 日历类

da5fd48063cf91587486b1e91de061f4.png

Calender类:它是日历类。其实这个类相当于一个容器。这个容器中保存者当前时间相关的所有信息。

比如:今天是一年中的第几天,今天是一周中的第几天,今天是这个月的第几周,今天是几月,几日,时分秒等信息都保存在这个容器中。

Calender类 年月日时分秒,12个月 ,星期 等对应的英文数据都封装成静态的成员变量。

Calender类是抽象类,它中提供了静态的getInstance方法获取到Calender对象()。

cae9a65a30e243fffa531789258af96b.png

1 //简单演示Calendar

2 public static voidmethod() {3

4 //获取Calendar对象

5 Calendar c =Calendar.getInstance();6

7 System.out.println(c);8

9 System.out.println(c.get( Calendar.YEAR ));10 /*

11 * 计算机中的月份是从 零开始的。12 * 0 表示 1月13 * 1 表示2月14 * 11表示12月15 * 12表示下一年的1月16 */

17 System.out.println(c.get( Calendar.MONTH ));18 System.out.println(c.get( Calendar.DAY_OF_MONTH ));19

20 }21

22

23 /*

24 * 计算任意一年的2月有多少天?25 * 由于时间数据是连续的,因此我们可以将当前的时间设置为26 * 当年的3月1日,然后让天数-1,当前的时间就自动的变为了2月的最后一天。27 * 我们只需要将当前这个月中的天数获取出来,就是二月共计有多少天28 */

29 public static voidmethod2() {30

31 //获取到Calendar对象

32 Calendar c =Calendar.getInstance();33

34 //设置当前的时间为 3月 1日

35 for (int year = 1000; year < 2555; year++) {36 c.set(year, 2, 1);37 //让天数 -1

38 c.add(Calendar.DAY_OF_MONTH, -1);39 //获取到当前处理后的月中的天数

40 System.out.println(year + "年的2月有 " + c.get(Calendar.DAY_OF_MONTH) + "天");41 }42 }

二 、 JDK5的特性

1. 静态导入

1 /*

2 * 静态导入演示3 * 在程序中如果需要使用某些类中的静态成员,可以在程序开始的时候,4 * 先将这些静态成员导入到程序中5 * 然后在程序中就可以直接使用静态成员,而不需要指定类名6 */

7 import staticjava.lang.Math.PI;8 import staticjava.lang.System.out;9

10 public classStaticImportDemo {11 public static voidmain(String[] args) {12 out.println(PI);13 }14 }

2.  可变参数

1 /*

2 * 演示可变参数3 */

4 public classParameterArgumentsDemo {5 public static voidmain(String[] args) {6

7 int sum = getSum(1, 2, 4);8 System.out.println(sum);9 /*

10 * 如果需要操作多个类型相同的数据的,将这些数据需要传递给某个方法11 * 在JDK5之前:可以先将这些数据存储到数组中,然后将数组传递给方法12 *13 * 到JDK5之后,可以使用可变参数的技术来接收不确定个数的数据14 *15 */

16 int[] arr = {11,22,33,44,55,66,77,88};17

18 int sum2 = getSum(12,33,44,55);19 System.out.println(sum2);20 }21

22 /*

23 * 演示定义可变参数的方法24 * 可变参数:25 * 1、它实际中接收到的数据之后,依然保持在数组中,在方法中还是要通过数组的方式进行操作26 * 2、如果方法上除了可变参数之外,还有其他的参数,这时可变参数必须写在整个方法参数列表的最后27 */

28 public static int getSum(int x , int... arr ) {29

30 int sum = 0;31 for (int i = 0; i < arr.length; i++) {32 sum +=arr[i];33 }34 returnsum;35 }36 /*计算传递的数组中的和值37 public static int getSum(int[] arr) {38

39 int sum = 0;40 for (int i = 0; i < arr.length; i++) {41 sum += arr[i];42 }43 return sum;44 }45 */

46 //需求:定义功能 计算2个数的和值

47 public static int getSum(int i, int j , intk) {48 return i + j +k;49 }50

51 //需求:定义功能 计算2个数的和值

52 public static int getSum(int i, intj) {53 return i +j;54 }55 }

3.foreach循环

1 /*

2 * 在JDK5中提供了一个可以简化for循环的技术:3 * foreach技术:高级for循环4 * 普通for循环的书写格式:5 * for( 表达式1 ; 表达式2 ; 表达式3 ){6 * 循环体7 * }8 * foreach书写格式:9 * for( 数组空间中的元素类型 变量名 : 数组名 ){10 * 循环体11 * }12 * 使用foreach遍历数组的时候,定义的变量名中保存的数据是从数组中取出的元素13 * 弊端:foreach只能遍历,不能对数组空间中的值进行其他的操作14 */

15 public classForEachDemo {16 public static voidmain(String[] args) {17

18 int[] arr = {11,22,33,44,55,66};19

20 //使用普通for循环遍历

21 for(int i = 0 ; i < arr.length ; i ++){22 System.out.print(arr[i] + " ");23 }24 System.out.println("\n===================");25 //使用foreach遍历数组

26 for( intx : arr ){27 System.out.print(x + " ");28 }29 }30 }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值