Java学习(16)--System 类/Date 类/ Calendar类

简介: System (1)系统类 ,提供了一些有用的字段和方法(2)成员方法 A:运行垃圾回收器public static void gc()B:退出 jvmpublic static void exit(int status):终止当前正在运行的 Java虚拟机。

System 

(1)系统类 ,提供了一些有用的字段和方法

(2)成员方法 

A:运行垃圾回收器

public static void gc()

B:退出 jvm

public static void exit(int status):

终止当前正在运行的 Java虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。

C:获取当前时间的毫秒值

public static long currentTimeMillis()

D:数组复制

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

从指定源数组中复制一个数组, 复制从指定的位置开始, 到目标数组的指定位置结束。

示例:

 

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

int [] arr2 = { 6, 7, 8, 9, 10 };

System.arraycopy (arr, 1, arr2, 2, 2);

 

System. out .println(Arrays.toString (arr));   //[11, 22, 33, 44, 55]

System.out .println(Arrays.toString (arr2));  //[6, 7, 22, 33, 10]

 

Date/DateFormat

(1) Date 是日期类,可以精确到毫秒。

A:构造方法

Date() Date(long time)

B:成员方法

getTime() setTime(long time)

C:日期和毫秒值的相互转换

 

案例:你来到这个世界多少天了 ?

代码:

Scanner sc =	newScanner(System.	in );  //	键盘录入你的出生的年月日
System.	out .println(	" 请输入你的出生年月日	:" ); 

String line = sc.nextLine();

SimpleDateFormat sdf =	newSimpleDateFormat(	"yyyy-MM-dd"	); //	把该字符串转换为一个日期
Date d = sdf.parse(line);

long	myTime = d.getTime();   //	通过该日期得到一个毫秒值

long	nowTime = System.	currentTimeMillis	();  //	获取当前时间的毫秒值

long	time = nowTime - myTime;  //	用  D-C得到一个毫秒值

long	day = time / 1000 / 60 / 60 / 24;  //	把 E的毫秒值转换为年

System.	out .println(	" 你来到这个世界:	"  + day +	" 天" );

(1) DateFormat 针对日期进行格式化和针对字符串进行解析的类,但是是抽象类,

所以使用其子类 SimpleDateFormat

A:SimpleDateFormat(String pattern)   给定模式

yyyy-MM-dd HH:mm:ss

B:日期和字符串的转换

a:Date -- String 

format()

 

b:String -- Date

parse()

代码:

// Date -- String

Date d =	new Date();  //	创建日期对象

// SimpleDateFormat sdf = new SimpleDateFormat();    //	创建格式化对象

SimpleDateFormat sdf =newSimpleDateFormat(	"yyyy	年 MM月dd 日 HH:mm:ss"	);    //给定模式


// public final String format(Date date) String s = sdf.format(d);

System.	out .println(s);



//String -- Date

String str =	"2008-08-08 12:12:12"	;

//在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配

SimpleDateFormat sdf2 =	newSimpleDateFormat(	"yyyy-MM-dd HH:mm:ss"	); 

Date dd = sdf2.parse(str);

System.	out .println(dd);

Date d =	new Date();  //	创建日期对象

// SimpleDateFormat sdf = new SimpleDateFormat();    //	创建格式化对象

SimpleDateFormat sdf =newSimpleDateFormat(	"yyyy	年 MM月dd 日 HH:mm:ss"	);    //给定模式


// public final String format(Date date) String s = sdf.format(d);

System.	out .println(s);



//String -- Date

String str =	"2008-08-08 12:12:12"	;

//在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配

SimpleDateFormat sdf2 =	newSimpleDateFormat(	"yyyy-MM-dd HH:mm:ss"	); 

Date dd = sdf2.parse(str);

System.	out .println(dd);

 

 Calendar

(1)日历类,封装了所有的日历字段值,通过统一的方法根据传入不同的日历字段可以获取值。

(2)如何得到一个日历对象呢 ?

Calendar rightNow = Calendar.getInstance();本质返回的是子类对象

(3)成员方法

A:根据日历字段得到对应的值 

// 其日历字段已由当前日期和时间初始化:

Calendar rightNow = Calendar.getInstance(); // 子类对象

int year = rightNow.get(Calendar.YEAR); // 获取年

int month = rightNow.get(Calendar.MONTH); // 获取月

int date = rightNow.get(Calendar.DATE); // 获取日 

 

B:根据日历字段和一个正负数确定是添加还是减去对应日历字段的值

public void add(int field,int amount):

根据给定的日历字段和对应的时间,来对当前的日历进行操作。

// 5 年后的 10 天前

c.add(Calendar.YEAR, 5);

c.add(Calendar.DATE, -10);

 

C:设置日历对象的年月日

public final void set(int year,int month,int date):

设置当前日历的年月日如: c.set(2011, 11, 1);

(4)案例:

计算任意一年的 2月份有多少天 ?

//键盘录入任意的年份

Scanner sc =newScanner(System.in);

System.out.println(" 请输入年份:");

int year = sc.nextInt();    //设置日历对象的年月日

Calendar c = Calendar.getInstance();

c.set(year, 2, 1);    // 其实是这一年的3月 1日,把时间往前推一天,就是2月的最后一天
System.	out .println(c.get(Calendar.MONTH)); 

c.add(Calendar.DATE, -1);

System.	out .println(c.get(Calendar.MONTH));    //获取这一天输出即可

System.	out .println(c.get(Calendar.DATE));

BigInteger 

(1)可以让超过 Integer 范围内的数据进行运算

(2)构造方法A:BigInteger(String s)

(3)成员方法 

public BigInteger add(BigInteger val):       //加

public BigInteger subtract(BigInteger val):   //减

public BigInteger multiply(BigInteger val):   //乘

public BigInteger divide(BigInteger val):   //除

public BigInteger[] divideAndRemainder(BigInteger val) ://返回商和余数的数组

 

BigDecimal

(1)浮点数据做运算, 会丢失精度。 所以,针对浮点数据的操作建议采用 BigDecimal。

(2)构造方法

A:BigDecimal(String s)

(3)成员方法:

public BigDecimal add(BigDecimal augend)    //加

public BigDecimal subtract(BigDecimal subtrahend) //减

public BigDecimal multiply(BigDecimal multiplicand)  //乘

public BigDecimal divide(BigDecimal divisor)  //除

public BigDecimal divide(BigDecimal divisor,int scale,introundingMode) //商,几位小数

 

 

 

 

 

 

 

 

 

目录
相关文章
|
21小时前
|
存储 Java ice
【Java开发指南 | 第十六篇】Java数组及Arrays类
【Java开发指南 | 第十六篇】Java数组及Arrays类
8 3
|
21小时前
|
Java 编译器 ice
【Java开发指南 | 第十五篇】Java Character 类、String 类
【Java开发指南 | 第十五篇】Java Character 类、String 类
8 1
|
22小时前
|
数据采集 安全 Java
Java并发编程学习12-任务取消(上)
【5月更文挑战第6天】本篇介绍了取消策略、线程中断、中断策略 和 响应中断的内容
13 4
Java并发编程学习12-任务取消(上)
|
22小时前
|
Java 编译器
【Java开发指南 | 第一篇】类、对象基础概念及Java特征
【Java开发指南 | 第一篇】类、对象基础概念及Java特征
9 4
|
2天前
|
Java 调度
Java一分钟之线程池:ExecutorService与Future
【5月更文挑战第12天】Java并发编程中,`ExecutorService`和`Future`是关键组件,简化多线程并提供异步执行能力。`ExecutorService`是线程池接口,用于提交任务到线程池,如`ThreadPoolExecutor`和`ScheduledThreadPoolExecutor`。通过`submit()`提交任务并返回`Future`对象,可检查任务状态、获取结果或取消任务。注意处理`ExecutionException`和避免无限等待。实战示例展示了如何异步执行任务并获取结果。理解这些概念对提升并发性能至关重要。
16 5
|
2天前
|
安全 Java 调度
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第12天】 在现代软件开发中,多线程编程是提升应用程序性能和响应能力的关键手段之一。特别是在Java语言中,由于其内置的跨平台线程支持,开发者可以轻松地创建和管理线程。然而,随之而来的并发问题也不容小觑。本文将探讨Java并发编程的核心概念,包括线程安全策略、锁机制以及性能优化技巧。通过实例分析与性能比较,我们旨在为读者提供一套既确保线程安全又兼顾性能的编程指导。
|
2天前
|
Java
Java一分钟:线程协作:wait(), notify(), notifyAll()
【5月更文挑战第11天】本文介绍了Java多线程编程中的`wait()`, `notify()`, `notifyAll()`方法,它们用于线程间通信和同步。这些方法在`synchronized`代码块中使用,控制线程执行和资源访问。文章讨论了常见问题,如死锁、未捕获异常、同步使用错误及通知错误,并提供了生产者-消费者模型的示例代码,强调理解并正确使用这些方法对实现线程协作的重要性。
13 3
|
2天前
|
安全 算法 Java
Java一分钟:线程同步:synchronized关键字
【5月更文挑战第11天】Java中的`synchronized`关键字用于线程同步,防止竞态条件,确保数据一致性。本文介绍了其工作原理、常见问题及避免策略。同步方法和同步代码块是两种使用形式,需注意避免死锁、过度使用导致的性能影响以及理解锁的可重入性和升级降级机制。示例展示了同步方法和代码块的运用,以及如何避免死锁。正确使用`synchronized`是编写多线程安全代码的核心。
55 2
|
2天前
|
安全 Java 调度
Java一分钟:多线程编程初步:Thread类与Runnable接口
【5月更文挑战第11天】本文介绍了Java中创建线程的两种方式:继承Thread类和实现Runnable接口,并讨论了多线程编程中的常见问题,如资源浪费、线程安全、死锁和优先级问题,提出了解决策略。示例展示了线程通信的生产者-消费者模型,强调理解和掌握线程操作对编写高效并发程序的重要性。
42 3