System类
System类:系统类,用于获取系统的属性和方法,没有构造方法。
System的属性都是静态属性,方法是静态方法
方法:
获取当前系统时间
CurrentTimeMillis()返回的是毫秒值。返回当前时间与1970年1月一日午夜时间差。(毫秒为单位)
.exit(0)强制退出
demo:判断运行时间
long start=System.currentTimeMillis();
for (int i = 0; i < 500; i++) {
System.out.println(i);
}
long ends=System.currentTimeMillis();
System.out.println(ends-start);
System.out.println("程序开始了!");
//强制退出java程序
System.exit(0);
System.out.println("程序结束");
0
1
2
3
4
1
程序开始了!
Date类:
Date日期类:提供了java中日期和时间的支持。
创建一个当前时间的Date对象
Date date=new Date();
获取距离1970年毫秒数
.getTime();
demo:
//Date类 获取当前系统时间
Date date=new Date();
System.out.println(date);
//获取离1970年的毫秒数
Date date2=new Date();
long l=date2.getTime();
System.out.println(l);
Date date3=new Date();
long start=date3.getTime();
for (int i = 0; i <10; i++) {
System.out.print(i);
}
Date end=new Date();
long send=end.getTime();
System.out.println(send-start);
控制台太长就不复制了。
DateFormat类
DateFormat类:主要提供了日期的格式化显示。
获取日期:
DateFormat df1=new DateFormat.getDateInstance();
df1.format();
获取日期时间:
DateFormat df2=DateFormat.getDateimeInstance();
demo:
//获取要格式化的日期对象
Date date=new Date();
//获取Dateformat工具类对象
DateFormat df=DateFormat.getDateInstance();
//获取格式化的字符串
System.out.println(df.format(date));
//获取详细的时间和日期
DateFormat dateFormat=DateFormat.getDateTimeInstance();
System.out.println(dateFormat.format(date));
控制台
2020-5-21
2020-5-21 9:25:00
SimpleDateFormat类
SimpleDateFormat类:提供了日期和字符串的转换。
(1)字符串转Date
(2)Date转字符串
demo:
//字符串转日期
String day="2020/05/21 09:38:22";
//参数对应的是字符串解析出的日期
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date=simpleDateFormat.parse(day);
System.out.println(date);
//日期转字符串
Date date2=new Date();
//我们希望转换的字符串形式
SimpleDateFormat simpleDateFormat2=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String s=simpleDateFormat2.format(date2);
System.out.println(s);
Thu May 21 09:38:22 CST 2020
2020/05/21 09:55:49
Math类
Math类:提供 了一系列数学操作方法
Math类的方法都是静态方法,直接由类名调用。
方法:
(1)求绝对值:Math.abs(a)
(2)求平方根:Math.sqrt(a)
(3)求较大值:Math.max(a)
(4)求较小值:Math.min(a,b)
(5)四舍五入:Math.round(num,2)
(6)获取0-1随机数:Math.random()
demo:
int a=15;
double b=3.1415;
//求绝对值
double s1=Math.abs(b);
System.out.println(s1);
//求平方根
double s2=Math.sqrt(b);
System.out.println(s2);
//比较大小
int s3=Math.max(55, 66);
System.out.println(s3);
//四舍五入
double s5=Math.round(b);
System.out.println(s5);
//随机数
double s6=Math.random();
System.out.println(s6);
double c1=15.3;
double c2=3;
DecimalFormat dFormat=new DecimalFormat("0.00");
String s7=dFormat.format(c1/c2);
System.out.println(s7);
3.1415
1.772427713617681
66
3.0
0.6172979109859751
5.10
Random类
Random类提供了Java中随机素的支持
使用Random类需要先创建Random对象。
Random r1=new Random();
demo:
Random random=new Random();
//获取0-80之间的随机整数
int num=random.nextInt(80);
System.out.println(num);
double num1=random.nextDouble();
System.out.println(num1);
//获取0-55的10个整数
for (int i=0;i<10 ;i++ ) {
System.out.println(random.nextInt(55));
0
0.8779117053782289
31
13
49
15
36
16
53
28
44
13
BigInteger类
BigInteger类表示大整数类,封装了大整数常见的数学运算。
声明一个 BigInteger类的对象,使用字符串形式表示数字。
BigInteger bi=new BigInteger(“13516”)
常用运算:
加法:bi.add( BigInteger b);
减法:bi.subtract(BigInteger b);
乘法:bi.multiply(BigInteger b);
除法:bi.divide(BigInteger b);
模:bi.remainder(BigInteger b)
BigInteger bInteger=new BigInteger("5211314");
BigInteger bInteger1=new BigInteger("1314521");
//加减乘除取模
System.out.println(bInteger.add(bInteger1));
System.out.println(bInteger.subtract(bInteger1));
System.out.println(bInteger.multiply(bInteger1));
System.out.println(bInteger.divide(bInteger1));
System.out.println(bInteger.remainder(bInteger1));
6525835
3896793
6850381690594
3
1267751
BigDecimal类
BigDecimal类表示超大小数类,可对超大小数进行精确计算
BigDecimal bd=new BigDecimal();
常用运算:
加法:bd.add( BigDecimal b);
减法:bd.subtract(BigDecimal b);
乘法:bd.multiply(BigDecimal b);
除法:bd.divide(BigDecimal b);
四舍五入:bd.divide(BigDecimal b,int len,BigDecimal.ROUND_HALF_UP)
同上一方法,就不写demo了。
对象克隆
在java中,如果要拷贝一个简单的变量,可以直接赋值。但是如果做这个变量是一个复杂的对象,直接赋值就会带来一系列的问题,我们就需要克隆技术。
一个类要实现克隆,需要做两个操作:
(1)实现Cloneable接口;
(2)重写Object的clone方法
stu s1=new stu("张三", 15);
//直接赋值
stu s2=s1;
//克隆
stu s3=s1.clone();
s3.setAge(150);
s3.setName("王五");
System.out.println(s3.getName()+s3.getAge());
System.out.println(s1.getName()+s1.getAge());
s2.setAge(20);
s2.setName("aa");
System.out.println(s2.getName()+s2.getAge());
System.out.println(s1.getName()+s1.getAge());
Time定时器
Timer类是一种线程 设施,可以用来实现某一时间或者某一段时间后安排一个任务的执行。
Timer类需要和TimerTask类配合使用
(1)创建Timer对象:
Timer timer=new Timer();
实现一段时间后执行某任务:
Timer.schedule(TimerTask t,long time)
实现某个时间点执行某任务:
Timer.schedule(TimerTask t,Date date)
重复执行定时任务:
Timer.schedule(TimeTask,firsttime,period)
//控制定时任务的执行方式
Timer timer=new Timer();
//定义定时任务的执行内容
TimerTask task=new TimerTask() {
public void run() {
System.out.println("定时任务被执行");
}
};
//一段时间后执行定时任务
timer.schedule(task, 3000);
//在固定时间点执行任务
timer.schedule(task, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2020-05-21 12:05:50"));
//重复执行定时任务
timer.schedule(task, 2000, 1000);
单例模式
是java设计模式之一:目的在于避免频繁创建和销毁实例,减少内存开销
单例模式使用场景:
1.要求生产唯一序列号
2.计数器,不用每次刷新都在数据库里加一次,用单例对象先缓存起来
3.连接数据库的对象等等
单例模式实现步骤:
1.定义一个属性,保存当前类的静态对象(单例对象)
2.将构造方法私有
3.创建一个静态get()方法返回给这个单例对象
两种模式实现单例,懒汉模式和饿汉模式
懒汉模式:
创建实例的过程是在get()方法中,当需要单例对象时,调用get()方法菜实例化。
优点:使用的时候才创建实例,避免内存浪费
缺点:线程不安全,无法保证绝对的单例(可以加线程锁解决,但会降低执行效率)
饿汉模式:
直接在属性中实例化,类加载的时候单利对象就准备好了。
优点:不需要的时候也会创建实例,会导致内存浪费;
缺点:线程安全,而且执行效率高;
(使用枚举也可以很方便实现单利模式,本质上也是懒汉模式)
下一章节:JavaSE字符串(JavaSE大全)