Math类:
用于数学运算的类。
成员变量:
public static final double PI
public static final double E(自然对数底数)
成员方法:
public static int abs(int a):绝对值
public static double ceil(double a):向上取整
public static double floor(double a):向下取整
public static int max(int a,int b):最大值 min:最小值
public static double pow(double a,double b):a的b次幂
public static double random():随机数[0.0,1.0);
public static int round(float a):四舍五入
public static double sqrt(double a):正平方根
public class MathDemo {
public static void main(String[] args) {
System.out.println("PI:"+Math.PI);
System.out.println("E:"+Math.E);
System.out.println("----------------------");
System.out.println("abs:"+Math.abs(-2));
System.out.println("ceil:"+Math.ceil(12.34));
System.out.println("floor:"+Math.floor(12.56));
System.out.println("max:"+Math.max(Math.max(10, 20), 15));
System.out.println("pow:"+Math.pow(5, 3));
System.out.println("random:"+Math.random());//[0.0,1.0);
System.out.println("random:"+(int)(Math.random()*100+1));//[1,100];
System.out.println("round:"+Math.round(10.56));
System.out.println("sqrt:"+Math.sqrt(16));
}
}
-----------------------------------------------------------------------
结果:
PI:3.141592653589793
E:2.718281828459045
----------------------
abs:2
ceil:13.0
floor:12.0
max:20
pow:125.0
random:0.5117797003372551
random:14
round:11
sqrt:4.0
System类概述
System类包含一些有用的类字段和方法。不能被实例化。
成员方法:
public static void gc():用于垃圾回收
public static void exit(int status):终止当前正在运行的Java 虚拟机。参数用作状态码;根据惯例,非0的状态码表示异常终止。
public static long currentTimeMillis():返回以毫秒为单位的当前时间
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
public class SystemDemo {
public static void main(String[] args) {
System.out.println("程序第一步!");
System.out.println("第二步");
System.exit(0);
System.out.println("三");
}
}
----------------------------------------------------------------
结果:
程序第一步!
第二步
public class SystemDemo2 {
public static void main(String[] args) {
long begin=System.currentTimeMillis();
for(int i = 0;i<50;i++) {
System.out.print("java:"+i+"、");
}
System.out.println("java:50");
long end=System.currentTimeMillis();
System.out.println("共耗时:"+(end-begin)+"毫秒");
}
}
--------------------------------------------------
结果:
java:0、java:1、java:2、java:3、java:4、java:5、java:6、java:7、java:8、java:9、java:10、java:11、java:12、java:13、java:14、java:15、java:16、java:17、java:18、java:19、java:20、java:21、java:22、java:23、java:24、java:25、java:26、java:27、java:28、java:29、java:30、java:31、java:32、java:33、java:34、java:35、java:36、java:37、java:38、java:39、java:40、java:41、java:42、java:43、java:44、java:45、java:46、java:47、java:48、java:49、java:50
共耗时:4毫秒
import java.util.Arrays;
public class SystemDemo3 {
public static void main(String[] args) {
int[] arry = { 11, 22, 33, 44, 55 };
int[] arry2 = { 3, 4, 5, 6, 7 };
System.arraycopy(arry, 1, arry2, 2, 2);
System.out.println(Arrays.toString(arry));
System.out.println(Arrays.toString(arry2));
}
}
-----------------------------------------------------------------------
结果:
[11, 22, 33, 44, 55]
[3, 4, 22, 33, 7]
BigInteger类
BigInteger类概述:
可以让超过Integer范围内的数据进行运算
构造方法:
public BigInteger(String val)
成员方法:
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):返回商和余数的数组
import java.math.BigInteger;
public class BigIntegerDemo {
public static void main(String[] args) {
BigInteger bi = new BigInteger("100");
BigInteger bi2 = new BigInteger("50");
System.out.println("加:"+bi.add(bi2));
System.out.println("减:"+bi.subtract(bi2));
System.out.println("乘:"+bi.multiply(bi2));
System.out.println("除:"+bi.divide(bi2));
System.out.println("-------------");
BigInteger[] bigarr = bi.divideAndRemainder(bi2);
System.out.println("商:"+bigarr[0]);
System.out.println("余数:"+bigarr[1]);
}
}
---------------------------------------------------------------------------------
结果;
加:150
减:50
乘:5000
除:2
-------------
商:2
余数:0
BigDecimal类
由于在运算时,float类型和double很容易丢失精度;所以为了能精确的表示计算浮点数,Java提供了BigDecimal
BigDecimal类概述:不可变的、任意精度的有符号十进制数,可以解决数据丢失问题。
构造方法:
public BigDecimal(String val)
成员方法:
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,int roundingMode):商,几位小数,如何舍取
import java.math.BigDecimal;
public class BigDecimalDemo {
public static void main(String[] args) {
System.out.println(0.09+0.01);
System.out.println(0.15-0.07);
System.out.println(1.15*2.003);
System.out.println(1.2/0.2);
System.out.println("-------------------");
BigDecimal decimal = new BigDecimal("0.09");
BigDecimal decimal2 = new BigDecimal("0.01");
System.out.println(decimal.add(decimal2));
BigDecimal decimal3 = new BigDecimal("0.15");
BigDecimal decimal4 = new BigDecimal("0.07");
System.out.println(decimal3.subtract(decimal4));
BigDecimal decimal5 = new BigDecimal("1.15");
BigDecimal decimal6 = new BigDecimal("2.003");
System.out.println(decimal5.multiply(decimal6));
BigDecimal decimal7 = new BigDecimal("1.2");
BigDecimal decimal8 = new BigDecimal("0.2");
System.out.println(decimal7.divide(decimal8));
System.out.println(decimal7.divide(decimal8, 3, BigDecimal.ROUND_HALF_UP));
}
}
-------------------------------------------------------------------------------------------------------------
结果:
0.09999999999999999
0.07999999999999999
2.3034499999999998
5.999999999999999
-------------------
0.10
0.08
2.30345
6
6.000
Date:
Date:表示特定的瞬间,精确到毫秒。
构造方法:
Date():根据当前的默认毫秒值创建日期对象
Date(long date):根据给定的毫秒值创建日期对象。
成员方法:
public long getTime():获取时间,以毫秒为单位
System.out.println(System.currentTimeMillis()); (获取当前时间,以毫秒为单位)
public void setTime(long time): 设置时间
计算机起始计算时间:1970年1月1日
import java.util.Date;
public class DataDemo {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
long time = 1000;
Date date2 = new Date(time);
System.out.println(date2);
Date d = new Date();
long time2 = d.getTime();
System.out.println(time2);
System.out.println(System.currentTimeMillis());
System.out.println("d:"+d);
d.setTime(1000);
System.out.println("d:"+d);
}
}
--------------------------------------------------------------------------------
Fri Oct 11 15:45:22 CST 2019
Thu Jan 01 08:00:01 CST 1970
1570779922360
1570779922360
d:Fri Oct 11 15:45:22 CST 2019
d:Thu Jan 01 08:00:01 CST 1970
DateForamt:
可以进行日期和字符串的格式化和解析,但是由于是抽象类,所以使用具体子类SimpleDateForamt。
SimpleDateFormat的构造方法:
SimpleDateFormat():默认模式
SimpleDateFormat(String pattern):给定的模式
年 y 月 M 日 d 时 H 分 m 秒 s
注意:在把一个字符串解析为日期时,格式必须和给定的字符串格式匹配。
Date -- String (格式化,时间转字符串)
public final String format (Date date):
String -- Date (解析,字符串转时间)
public Date parse(String source):
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
//格式化,时间转字符串
//默认模式
SimpleDateFormat sdf = new SimpleDateFormat();
Date date = new Date();
String s = sdf.format(date);
System.out.println(s);
//给定模式
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s2 = sdf2.format(date);
System.out.println(s2);
//解析,字符串转时间
String s3 = "2019-10-11 16:20";
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date2 = sdf3.parse(s3);
System.out.println(date2);
}
}
-----------------------------------------------------------------------------------------
2019/10/11 下午4:20
2019年10月11日 16:20:14
Fri Oct 11 16:20:00 CST 2019
Calendar类概述
Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
成员方法:
pubic static Calendar getlnstance();
public int get(int field);
public void add(int field,int amount):根据给定的日历字段和对应的时间,来对当前的日历进行操作
public final void set(int year,int month,int date);设置当前日历的年月日
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
// 其日历字段已有当前日期和时间初始化;
Calendar rightNow = Calendar.getInstance(); //子类对象(多态)
// 获取年
int year = rightNow.get(Calendar.YEAR);
// 获取月
int month = rightNow.get(Calendar.MONTH);
// 获取日
int date = rightNow.get(Calendar.DATE);
System.out.println(year+"年"+(month+1)+"月"+date+"日");
System.out.println("----------------------");
//三年前的45天后
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -3);
c.add(Calendar.DATE, 45);
int year2 = c.get(Calendar.YEAR);
int month2 = c.get(Calendar.MONTH);
int date2 = c.get(Calendar.DATE);
System.out.println(year2+"年"+(month2+1)+"月"+date2+"日");
System.out.println("--------------------");
c.set(2008,7,8);
year2 = c.get(Calendar.YEAR);
month2 = c.get(Calendar.MONTH);
date2 = c.get(Calendar.DATE);
System.out.println(year2+"年"+(month2+1)+"月"+date2+"日");
}
}
---------------------------------------------------------------------------------------
结果:
2019年10月18日
----------------------
2016年12月2日
--------------------
2008年8月8日