System类
1)exit 退出当前程序 2)arraycopy:复制数组元素,比较适合底层调用,一般使用Arrays.copyOf完成复制数组int[] src={1,2,3};int[] dest = new int[3];System.arraycopy(src, 0, dest, 0, 3);
3)currentTimeMilens:返回当前时间距离1970-1-1 的毫秒数
4)gc:运行垃圾回收机制 System.gc();
src
: 源数组。srcPos
: 从源数组的哪个索引位置开始拷贝。dest
: 目标数组,即把源数组的数据拷贝到哪个数组。destPos
: 把源数组的数据拷贝到目标数组的哪个索引。length
: 从源数组拷贝多少个数据到目标数组
function copyArray(src, srcPos, dest, destPos, length)
for i = 1, length do
dest[destPos + i - 1] = src[srcPos + i - 1]
end
end
这个函数copyArray
接受五个参数:源数组src
,拷贝开始的位置srcPos
,目标数组dest
,拷贝到目标数组的起始位置destPos
,以及要拷贝的元素数量length
。然后,它通过一个循环将指定数量的元素从源数组拷贝到目标数组的指定位置。
BigInteger和BigDecimal介绍
应用场景: 1)BigInteger适合保存比较大的整型2)BigDecimal适合保存精度更高的浮点型(小数)
- add 加
- subtract减
- multiply乘
- divide除在使用除法时,除不尽会抛出异常,需要指定精度BigDecimal.ROUND_CEILING(保留分子的精度)
日期类
1)date:精确到毫秒,代表瞬时时间
构造器:Date():使用无参构造器创建的对象可以获取本地当前时间。
Date(long date)
常用方法
getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象
表示的毫秒数。
toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue,
Wed, Thu, Fri, Sat),zzz是时间标准。
其它很多方法都过时了。
SimpleDateFormat:格式和解析日期的类SimpleDateFormat 格式化和解析日期的具体类。它允许进行格式化(日期->文本)、解析(文本 ->日期)和规范化.
新时间日期API
java.time – 包含值对象的基础包
java.time.chrono – 提供对不同的日历系统的访问
java.time.format – 格式化和解析时间和日期
java.time.temporal – 包括底层框架和扩展特性
java.time.zone – 包含时区支持的类
说明:大多数开发者只会用到基础包和format包,也可能会用到temporal包。因此,尽
管有68个新的公开类型,大多数开发者,大概将只会用到其中的三分之一。
2)Calendar(日历)
1.Calendar是一个抽象类,并且构造器是private
2.可以通过 getInstance()来获取实例
3.提供大量的方法和字段提供给程序员
一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND
注意:
获取月份时:一月是0,二月是1,以此类推,12月是11
获取星期时:周日是1,周二是2 , 。。。。周六是7
二十四小时进制获取小时数:使用HOUR_OF_DAY替代HOUR
1)可变性:像日期和时间这样的类应该是不可变的。 2)偏移性:Date中的年份是从1900开始的,而月份都从0开始。 3)格式化:格式化只对Date有用,Calendar则不行 4)此外,它们也不是线程安全的;不能处理闰秒等(每隔2天,多出1s)
3)LocalDate(曰期)(年月日)、LocalTime(时间)(时分秒)、LocalDateTime(日期时间) JDK8时实行
2)DateTimeFormatter格式日期
类似于 SimpleDateFormatter
Instant时间戳
import java.time.Instant;
import java.util.Date;
public class Instant_ {
public static void main(String[] args) {
// 通过静态方法 now()获取表示当前时间戳的对象
Instant now = Instant.now();
System.out.println(now);
// 通过from将Instant转化为Date
Date date = Date.from(now);
// 通过date的toinstant()可以吧date转化为instant
Instant instant = date.toInstant();
}
}
- LocalDate类
- MonthDay类: 检查重复事件
- 是否是闰年
- 增加日期的某个部分
- 使用plus方法测试增加时间的某个部分
- 使用minus方法测试查看一年前和一年后的日期
package com.homework;
public class userRegister {
public static void main(String[] args) {
String name = "jack";
String pwd = "123546";
String email = "jack@sss.com";
try{
userRegister(name,pwd,email);
System.out.println("注册成功");
}catch (Exception e){
System.out.println(e.getMessage());
}
}
public static void userRegister(String name, String pwd, String email) {
int userLength = name.length();
if (!(userLength >= 2 && userLength <= 4)) {
throw new RuntimeException("用户长度为2·4");
}
if (!(pwd.length() == 6 && isDigital(pwd))) {
throw new RuntimeException("密码长度为6,要求全是数字");
}
int i = email.indexOf('@');
int j = email.indexOf('.');
if(!(i > -1 && j > i)) {
throw new RuntimeException("邮箱中包含@,.");
}
}
public static boolean isDigital (String str){
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (chars[i] < '0' || chars[i] >'9'){
return false;
}
}
return true;
}
}