Java常用类小结
对象方法都可以从API上面找:
- 内部类:在一个类的内部再定义一个完整的类。分为四种:成员内部类、静态内部类、局部内部类、匿名内部类。
- Object类:所有类的直接或间接父类,可存储任何对象。
- 包装类:基本数据类型所对应的引用数据类型,可以使Object统一所有数据。
- String类:字符串是常量,创建之后不可改变,字面值保存在字符串池中,可以共享。
- BigDecimal:可精确计算浮点数。
- Date:特定时间。
- Calendar:日历
- SimpleDateFormat:格式化时间
- System:系统类
BigDecimal类:精确计算浮点数
- 很多实际应用中需要精确运算,而double是近似值存储,不在符合要求,需要借助BlgDecimal。
- 位置:java.math包中。
- 作用:精确计算浮点数。
- 创建方式:
BigDecimal bd=new BigDecimal("1.0");
。【一定要用引号,不然和double一样近似值存储】 - 方法:
(1)BigDecimal add(BigDecimal bd)加
(2)BigDecimal subtract(BigDecimal bd)减
(3)BigDecimal multiply(BigDecimal bd)乘
(4)BigDecimal divide(BigDecimal bd)除
除法:divide(BigDecimal bd,int scal, RoupdingMode mode)
参数scal:指定精确到小数点后几位。
参数model:指定小数部分的取舍模式,通常采用四舍五入的模式。取值为BigDecimal.ROUND_HALF_UP
。
package classs;
import java.math.BigDecimal;
public class BigDecimalText {
public static void main(String[] args) {
//double近似值存储
double d1 = 1.9;
double d2 = 0.9;
System.out.println(d1-d2);//0.9999999999999999
//BigDecimal高精度运算
BigDecimal b1 = new BigDecimal("1.1");
BigDecimal b2 = new BigDecimal("0.2");
System.out.println(b1);
System.out.println(b2);
//加减乘除运算,均返回BigDecimal对象
BigDecimal ad = b1.add(b2);
System.out.println(ad);
System.out.println(b1.subtract(b2));
System.out.println(b1.multiply(b2));
System.out.println(b1.divide(b2)); //能都整除可以直接除
//除法测试:不能整除需要限定精度和舍入制度
//System.out.println(new BigDecimal("10").divide(new BigDecimal("3")));//编译报错
System.out.println(new BigDecimal("10").
divide(new BigDecimal("3"), 3, BigDecimal.ROUND_HALF_UP));
}
}
/*
0.9999999999999999
1.1
0.2
1.3
0.9
0.22
5.5
3.333
*/
Date类:特定时间
- Date表示特定的瞬间,精确到毫秒。
Date类中的大部分方法都已经被Calendar类中的方法所取代。但是过时的方法还是可以用。 - 时间单位:
1秒=1000毫秒
1毫秒=1000微秒
1微秒=1000纳秒 - 构造方法:new
Date()
:分配一个 Date对象并将它初始化,它代表的时间分配给它,测量精确到毫秒。
Date(long date)
:分配一个 Date对象并将它初始化为代表指定的毫秒数自基准时间被称为“时代”,即1970年1月1日,00:00:00 GMT。 - 对象方法:
long getTime()
:返回毫秒数自1970年1月1日以来,该 Date对象表示00:00:00 GMT。
boolean after(Date when)
:测试如果这个日期是在指定日期之后。 同样的还有after
、equals
。
int compareTo(Date anotherDate)
:比较两个日期。d1.compareTo(d2);
d1后返回正值,相等返回0,提前返回负值。
package classs;
import java.util.Date;
public class DateText {
public static void main(String[] args) {
Date d1 = new Date(); //默认构造今天
System.out.println(d1); //运行结果同(d1.toString()
System.out.println(d1.toLocaleString());//过时方法,仍然可用
Date d2 = new Date(d1.getTime()-(60*60*24*1000));//通过毫秒数,修改为昨天
System.out.println(d2.toLocaleString());
//比较日期
System.out.println(d1.after(d2));
System.out.println(d1.equals(d2));
System.out.println(d1.before(d2));
System.out.println(d1.compareTo(d2));
}
}
/*
Sun Oct 17 21:17:24 GMT+08:00 2021
2021-10-17 21:17:24
2021-10-16 21:17:24
true
false
false
1
*/
Calendar类:日历
- Calendar提供了获取或设置各种日历字段的方法。
- 构造方法:
protected Calendar()
由于修饰符是protected,所以无法直接创建该对象。 - 其他方法:
package classs;
import java.util.Calendar;
public class CalendarText {
public static void main(String[] args) {
Calendar c1 = Calendar.getInstance();//不能直接创建对象
//System.out.println(c1);//可以直接打印,长的很
System.out.println(c1.getTime());//返回Date对象表示时间
//get获取年、月、日..
System.out.println("get获取时间:");
int year = c1.get(Calendar.YEAR);
System.out.println(year);
System.out.println(c1.get(Calendar.MONTH));//0-11
System.out.println(c1.get(Calendar.DAY_OF_MONTH));
System.out.println(c1.get(Calendar.HOUR));//12小时,还有一个是24小时
System.out.println(c1.get(Calendar.MINUTE));
System.out.println(c1.get(Calendar.SECOND));
//修改时间
System.out.println("修改时间:");
Calendar c2 = Calendar.getInstance();//set方法修改时间
c2.set(Calendar.YEAR, 2008);
System.out.println(c2.getTime().toLocaleString());
c2.add(Calendar.YEAR, 2);//add方法修改时间按
System.out.println(c2.getTime().toLocaleString());
//获取时间常量上下线
System.out.println("Calendar.MONTH范围:");
System.out.println(c2.getActualMaximum(Calendar.MONTH));
System.out.println(c2.getActualMinimum(Calendar.MONTH));
}
}
/*
Sun Oct 17 22:38:24 GMT+08:00 2021
get获取时间:
2021
9
17
10
38
24
修改时间:
2008-10-17 22:38:24
2010-10-17 22:38:24
Calendar.MONTH范围:
11
0
*/
SimpleDateFormat类:格式化时间
- SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。
- 进行格式化
Date.format(Simple)
(日期→文本)、解析Simple.parse("2020/05/20")
(文本→日期)。 - 常用的时间模式字母
package classs;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatText {
public static void main(String[] args) throws Throwable {
//先创建一个对象
SimpleDateFormat s1 = new SimpleDateFormat("yyyy/MM/dd");
Date d1 = new Date();
//格式化:日期→文本
String str = s1.format(d1);
System.out.println(str);//2021/10/17
//解析:文本→日期
Date d2 = s1.parse("2020/05/20");
System.out.println(d2);//Wed May 20 00:00:00 GMT+08:00 2020
}
}
System类:系统
System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有的。
System.currentTimeMillis();
获取时间方法可用于计算程序速率(结束时间-开始时间),在(十八)可变长字符串中使用过。
System.gc();
回收垃圾方法在(十六)finalize()方法回收中使用过。
package classs;
public class SystemText {
public static void main(String[] args) {
System.out.println("arraycopy数组的复制");
//参数src源数组;srcPos从哪个位置开始复制; dest目标数组;destPos目标数组的位置;length复制的长度
int[] arr = {1,2,3,4,5,6,7,8};
int[] dest = new int[8];
System.arraycopy(arr, 0, dest, 2, 4);
for(int i=0; i<dest.length; i++) {
System.out.println(dest[i]);
}
//exit推出,后面程序不再执行
System.exit(0);
System.out.println("结束");
}
}
/*
arraycopy数组的复制
0
0
1
2
3
4
0
0
*/