JAVA常见工具类

 目录

 Math类

Random类 

System类 

BigInteger类 

BigDecimal类

Date类

 SimpleDateFormat类

Calendar类


 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("平年");
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
唔,其实里面就是一个工具类,加减乘除、保留两位小数。一共5个方法。。。emmmm.....为啥分这么高呢。因为宝宝想分想疯了。 附代码,有土豪就打赏打赏,没土豪的直接拿去使吧。 package cn.cisdom.base.utils; import java.math.BigDecimal; import java.text.DecimalFormat; public class Calculation { public static final DecimalFormat df = new DecimalFormat("######0.00"); /** * @methodName format2point * @desc 保留两位小数点 * @param value * @return java.lang.String * @author xm * @create 2018/6/7 12:03 **/ public static String format2point(Number value) { return df.format(value); } public static Double add(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.add(b2).doubleValue(); } /** * 提供精确的减法运算。 * * @param value1 * 减数 * @param value2 * 被减数 * @return 两个参数的差 */ public static Double sub(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.subtract(b2).doubleValue(); } /** * 提供精确的乘法运算。 * * @param value1 * 被乘数 * @param value2 * 乘数 * @return 两个参数的积 */ public static Double mul(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.multiply(b2).doubleValue(); } /** * 提供精确的除法运算。 * * @param value1 * 除数 * @param value2 * 被除数 * @return 除数/被除数 */ public static Double div(Number value1, Number value2) { //MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);//精度为2,舍入模式为大于0.5进1,否则舍弃 BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.divide(b2).doubleValue(); } public static void main(String[] args) { Double aDouble=Calculation.add(56.9, 1.67); System.out.println(aDouble); Double bDouble=Calculation.sub(99.2,aDouble); System.out.println(bDouble); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值