开发工具与关键技术: eclipse 和 Java
作者:杜永鹏
撰写时间:2021 年 6 月 16日
Java构造器
1.BigDecimal类
为了能精确表示、计算浮点数,java提供了BigDecimal类,该类提供了大量的构造器用于创建BigDecimal对象,包括把所有的基本数值型变量转成一个BigDecimal对象,页包括利用数字字符串,数字字符数组来创建BigDecimal对象。
1.1.常用构造器
构造器: BigDecimal(char[]in) 说明: 将 BigDecimal 的字符数组表示形式转换为 BigDecimal,接受与
构造器: BigDecimal(String) 说明: 构造方法相同的字符序列。
构造器: BigDecimal(doubleval) 说明: 将 double 转换为 BigDecimal,后者是 double 的二进制浮点值准确 的十进制表示形式。
构造器: BigDecimal(int val) 说明: 将 int 转换为 BigDecimal。
构造器: BigDecimal(longval) 说明: 将 long 转换为 BigDecimal。
构造器: BigDecimal(Stringval) 说明: 将 BigDecimal 的字符串表示形式转换为 BigDecimal。
public static void main (String[] args) {
//构造器
char[] cs=new char[] {‘1’,‘2’,‘3’};
BigDecimal bigDecimal1=new BigDecimal(cs);
System.out.println(“bigDecmal1=”+bigDecimal1);
BigDecimal bigDecimal2=new BigDecimal(50.0);
System.out.println("bigDecimal2="+bigDecimal2);
BigDecimal bigDecimal3=new BigDecimal(50);
System.out.println("bigDecimal3="+bigDecimal3);
BigDecimal bigDecimal4=new BigDecimal(50L);
System.out.println("bigDecimal4="+bigDecimal4);
BigDecimal bigDecimal5=new BigDecimal("50");
System.out.println("bigDecimal5="+bigDecimal5);
}
常用方法:
返回值类型: BigDecimal 方法: valueOf(double val) 说明: 使用 Double.toString(double) 方法提供的 double 规范的字符串表示形式将double 转换为 BigDecimal。
返回值类型: BigDecimal 方法: valueOf(long val) 说明: 将 long 值转换为具有零标度的BigDecimal。
返回值类型: BigDecimal 方法: abs() 说明: 返回 BigDecimal,其值为此 BigDecimal的绝对值,其标度为this.scale()。
返回值类型: BigDecimal 方法: add(BigDecimalaugend) 说明: 返回一个 BigDecimal,其值为 (this +augend)
返回值类型: BigDecimal 方法: subtract(BigDecimalsubtrahend) 说明: 返回一个 BigDecimal,其值为 (this -subtrahend),
返回值类型: BigDecimal 方法: multiply(BigDecimalmultiplicand) 说明: 返回一个 BigDecimal,其值为 (this ×multiplicand)
返回值类型: BigDecimal 方法: divide(BigDecimaldivisor) 说明: 返回一个 BigDecimal,其值为 (this /divisor)
返回值类型: BigDecimal 方法: pow(int n) 说明: 返回其值为 (thisn) 的 BigDecimal
返回值类型: int 方法: compareTo(BigDecimalval) 说明: 将此 BigDecimal 与指定的 BigDecimal 比较。
返回值类型: byte 方法: byteValue() 说明: 将此 BigDecimal 转换为 byte,
返回值类型: byte 方法: byteValueExact() 说明: 将此 BigDecimal 转换为 byte,以检查丢失的信息。
返回值类型: short 方法: shortValue() 说明: 将此 BigDecimal 转换为 short
返回值类型: short 方法: shortValueExact() 说明: 将此 BigDecimal 转换为 short,以检查丢失的信息。
返回值类型: int 方法: intValue() 说明: 将此 BigDecimal 转换为 int。
返回值类型: int 方法: intValueExact() 说明: 将此 BigDecimal 转换为 int,以检查丢失的信息
返回值类型: long 方法: longValue() 说明: 将此 BigDecimal 转换为 long。
返回值类型: long 方法: longValueExact() 将此 BigDecimal 转换为 long,以检查丢失的信息。
返回值类型: float 方法: floatValue() 说明: 将此 BigDecimal 转换为 float。
返回值类型: double 方法: doubleValue() 说明: 将此 BigDecimal 转换为 double。
返回值类型: String 方法: toString() 说明: 返回此 BigDecimal 的字符串表示形式,如果需要指数,则使用科学记数法。
public static void main(String[] args) {
//演示浮点型的精度丢失问题
System.out.println("0.06 + 0.01 = "+ (0.06 + 0.01));
System.out.println("1.0 - 0.38 = " + (1.0 - 0.38));
System.out.println("4.015 * 100 = " + (4.015 * 100));
System.out.println("1123.3 / 100 = " + (1123.3 / 100));
//不推荐使用构造器来转换浮点型数据
System.out.println("-----------------------------------");
BigDecimal decimalT1 =new BigDecimal("0.05");//推荐使用
BigDecimal decimalT2 = BigDecimal.valueOf(0.01);//推荐使用
BigDecimal decimalT3 = new BigDecimal(0.05);//不推荐使用
System.out.println("f1 = " +decimalT1);
System.out.println("f2 = " +decimalT2);
System.out.println("f3 = " +decimalT3);
System.out.println("使用String作为BigDecimal构造器参数: ");
System.out.println("0.05 + 0.01 = " +decimalT1.add(decimalT2));
System.out.println("0.05 - 0.01 = " +decimalT1.subtract(decimalT2));
System.out.println("0.05 * 0.01 = " +decimalT1.multiply(decimalT2));
System.out.println("0.05 / 0.01 = " +decimalT1.divide(decimalT2));
System.out.println("0.05 ^ 2 =" +decimalT1.pow(2));
System.out.println("使用double作为BigDecimal构造器参数: ");
System.out.println("0.05 + 0.01 = " + decimalT3.add(decimalT2));
System.out.println("0.05 - 0.01 = "+ decimalT3.subtract(decimalT2));
System.out.println("0.05 * 0.01 = " + decimalT3.multiply(decimalT2));
System.out.println("0.05 / 0.01 = " + decimalT3.divide(decimalT2));
System.out.println("0.05 ^ 2 =" + decimalT3.pow(2));
}
- Date和Calendar类
2.1.Date类
Java提供了Date类来处理日期、时间(此处的Date是指java.util包下的Date类,而不是java.sql包下的
Date类),Date对象既包含日期,也包含时间。Date类从JDK1.0起就开始存在了,因为它历史悠久,所
以它的大部分构造器、方法都已经过时,不再推荐使用了。
构造器:
Java.util.Date的构造器还剩下两个构造器,其他都已经过时(@Deprecated注解,表示已经不再推荐使
用,使用会有警告,并且可以会导致程序性能或者安全性方面的问题)
构造器: Date() 说明: 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
构造器: Date(longdate) 说明: 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
Java.util.Date的方法也剩下几个,其他都过时了:
返回值类型: boolean 方法: after(Date when) 说明: 测试此日期是否在指定日期之后。
返回值类型: boolean 方法: before(Date when) 说明: 测试此日期是否在指定日期之前。
返回值类型: Object 方法: clone() 说明: 返回此对象的副本。
返回值类型: int 方法: compareTo(DateanotherDate) 说明: 比较两个日期的顺序。
返回值类型: boolean 方法: equals(Object obj) 说明: 比较两个日期的相等性。
返回值类型: long 方法: getTime() 说明: 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
返回值类型: void 方法: setTime(long time) 说明: 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00GMT 以后 time 毫秒的时间点。
public static void main(String[] args) {
//构造器
Date date=new Date();
System.out.println(date);
Date date2=new Date(System.currentTimeMillis()-10000L);
System.out.println(date2);
//after() before()
boolean bol1=date.after(date2);
System.out.println(bol1);
boolean bol2=date.before(date2);
System.out.println(bol2);
//compareTo()
System.out.println("--------compareTo()------");
int intA= date.compareTo(date2);
System.out.println(intA);
//clone()
System.out.println("-------clone()-----");
Date date3=(Date) date.clone();
System.out.println(date3);
System.out.println(date==date3);
//equals()
System.out.println("--equals--");
boolean bol3=date.equals(date3);
System.out.println(bol3);
//getTime()
System.out.println("---getTime()-----");
long longA=date3.getTime();
System.out.println(longA);
//setTime()
System.out.println("-----setTime()-----");
System.out.println(date3);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO: handle exception
e.printStackTrace();
}
date3.setTime(System.currentTimeMillis());
System.out.println(date3);
SimpleDateFormat dateFormat
= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate=dateFormat.format(date3);
System.out.println(strDate);
String strD="2012-04-01 11:11:11";
Date date4;
try {
date4 = dateFormat.parse(strD);
System.out.println(date4);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}