目录
Math类
概述:
Math类包含于执行基本数学运算的方法,如初等指数,对数,平方根和三角函数
public static int abs(int a) //绝对值
public static double ceil(double a) //向上取整数但是是double
public static double floor(double a) //向下取整但是是double
public static int max(int a,int b)//取其中的较大值
public static double pow(double a,double b) //a^b
public static double random() //随机生成0.0到1.0之间的小数包括0.0
public static int round(float a) //四舍五入
public static double sqrt(double a) //开方
Random类
此类的实例用于生成伪随机数流。
构造方法Random()
Random(long seed)
import java.util.Random;
public class R {
public static void main(String[] args) {
Random r= new Random();
int x=r.nextInt();
System.out.println(x); //2139772084
int y =r.nextInt(100); //0-99任意生成随机数
System.out.println(y);
Random r1 = new Random(1000);
int a = r1.nextInt();
int b = r1.nextInt();
System.out.println(a); //-1244746321 重复运行也是这个结果,根据种子1000得到值
System.out.println(b); //1060493871 重复运行也是这个结果
}
}
System类
在System类提供的设施中,有标准输入,标准输出和错误输出流,对外部定义的属性和环境变量的访问,加载文件和库的方法,还有快速复制数组的一部分实用的方法
public static void gc() //运行垃圾回收器
public static void exit(int status) //终止当前正在运行的jvm,非0状态是异常退出
public static long currentTimeMillis() //返回以毫秒为单位的当前时间
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
//从指定源数组中复制一个数组,复制从指定位置开始,到目标数组的指定位置结束
在一个源文件中不允许定义两个用public修饰的类,两个公共的会抢夺地位
public class sy {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Ddemo();
System.gc(); //运行垃圾回收器
}
}
class Ddemo {
@Override
protected void finalize() throws Throwable {
// TODO Auto-generated method stub
System.out.println("清扫垃圾");
}
}
currentTimeMillis();返回的是当前时间与协调世界时间1970年1月1日午夜之间的时间差
1s=1000ms
public static void main(String[] args) {
// TODO Auto-generated method stub
long start = System.currentTimeMillis();
for(int i=0;i<1000;i++) {
System.out.println(1);
}
long end =System.currentTimeMillis();
System.out.println(end-start);
}
src是源数组 srcPos是源数组中的起始位置 dest是目标数组 dest是目标数组的起始位置 length是要复制的数组元素的数量
public class sy {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] src = {11,22,33,44};
int[] dest = new int[8];
System.arraycopy(src,0,dest,0,src.length);
for(int i=0;i<dest.length;i++) {
System.out.println(dest[i]);
}
}
}
BigInteger类
可以让超过Integer范围内的数据进行运算
构造方法:
public BigInteger(String val)
成员方法;
public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)
public BigIntevalger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger[] divideAndRemainder(BigInteger val)
import java.math.BigInteger;
public class Big {
public static void main(String[] args) {
BigInteger Bi = new BigInteger("100");
BigInteger BI= new BigInteger("7");
//加减乘除
System.out.println(Bi.add(BI));
System.out.println(Bi.subtract(BI));
System.out.println(Bi.multiply(BI));
System.out.println(Bi.divide(BI));
BigInteger[] arr = Bi.divideAndRemainder(BI);
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]); //除数和余数
}
}
}
BigDecimal类
由于在运算的时候,float类型和double类型很容易丢失精确度,所以为了能够准确表示,计算浮点数。
不可变的,任意精度的符号十进制。
构造方法
public BigDecimal (String val)
成员方法
public BigDecimal add(BigDecimal val)
public BigDecimal subtract(BigDecimal val)
public BigDecimal multiply(BigDecimal val)
public BigDecimal divide(BigDecimal val)
import java.math.BigDecimal;
public class as {
public static void main(String[] args) {
// TODO Auto-generated method stub
/* BigDecimal bd1 = new BigDecimal(2.0);
BigDecimal bd2 = new BigDecimal(1.1);
System.out.println(bd1.subtract(bd2)); */ //不推荐这种方式,结果不够精确里面应该传入字符串
BigDecimal bd1 = new BigDecimal("2.0");
BigDecimal bd2 = new BigDecimal("1.1");
System.out.println(bd1.subtract(bd2));
BigDecimal bd3 = BigDecimal.valueOf(2.0);
BigDecimal bd4 = BigDecimal.valueOf(1.1);
System.out.println(bd3.subtract(bd4));
}
}
Date类
表示特定的瞬间,精确到毫秒(util包下的,不是sql包下的)
构造方法
public Date()
public Date(long date)
成员方法
public long getTime()
public void setTime(long time)
import java.util.Date;
public class wwww {
public static void main(String[] args) {
Date d1 = new Date();
Date d2 = new Date(0);
System.out.println(d1);
System.out.println(d2);
System.out.println(d1.getTime());
System.out.println(System.currentTimeMillis()); //不一样是因为运行到它的时候已经过了一段时间
d1.setTime(1234); //设置毫秒值改变时间对象
System.out.println(d1);
}
}
SimpleDateFormat类
DateFormat类是其父类,该类是抽象类不允许实例化,它是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或是时间,是抽象类,所以使用其子类创建对象
构造方法:
public SimpleDateFormat()
public SimpleDateFormat(String pattern)
成员方法
public final String format(Date date) //日期格式化
public Date parse(String sourse) //将时间字符串转换成日期对象
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class wwww {
public static void main(String[] args) throws ParseException {
Date d =new Date();
SimpleDateFormat sdf = new SimpleDateFormat();
System.out.println(sdf.format(d));
SimpleDateFormat sdf1 = new SimpleDateFormat("y/M/d H:m:s");
System.out.println(sdf1.format(d));
String str ="2002年04月08日04:08:00";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
Date dd = sdf2.parse(str);
System.out.println(dd);
}
}
练习题:你来到这个世界多少天
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class test1 {
//你来到这个世界多少天
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
String str ="2002年04月08日04:08:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
Date d1 = sdf.parse(str);
String str1 ="2022年04月07日11:28:10";
Date d2 = sdf.parse(str1);
long time =d2.getTime()-d1.getTime();
System.out.println(time/1000/60/60/24);
}
}
Calendar类
抽象类,它为特定瞬间与一组诸如YEAR,MONTH,DAY_OF_MONTH,HOUR等日历字段之间的转换提供了一些方法
成员方法
public static Calender getInstance()
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 demmm {
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar c =Calendar.getInstance();
System.out.println(c);
System.out.println(c.get(Calendar.YEAR));
System.out.println(c.get(Calendar.MONTH)); //月份是从零开始编号的0-11月
System.out.println(c.get(Calendar.DAY_OF_WEEK)); //周日第一天
}
}
判断年份是闰年还是平年
import java.util.Calendar;
import java.util.Scanner;
public class test22 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份,判断该年份是闰年还是平年");
int year = sc.nextInt();
Calendar c =Calendar.getInstance();
c.set(year, 2, 1);
c.add(Calendar.DAY_OF_MONTH, -1);
if(c.get(Calendar.DAY_OF_MONTH)==29) {
System.out.println("闰年");
}
else
System.out.println("平年");
}
}