Java 常用API

api:java已经写好的常用功能的类 

Math

 

System:

arraycopy:参数: 

 

 

 

 Runtime:

         Object:

toString: 

 

equals:

 clone:

 浅拷贝:直接把原来变量记录的值(地址值)直接拷贝。改变一个值,另一个值也会随之改变。

深拷贝:如果是基本数据类型,会把变量记录的值直接拷贝过来。但是如果是引用数据类型,它不直接拷贝地址值,会在外面重新在创建一个对象,把原来的数据全都拷贝到新对象上。

不过引用数据类型如果不是手动new出来的,会在串池当中进行管理,字符串会复用。

Object里的克隆是浅克隆

第三方工具深克隆:

        第三方工具:Gson

        1.把第三方写的代码导入项目中

        2.编写代码

        Gson gson = new Gson();

       //把对象变成一个字符串

        Stirng s = gson.toJson(u1);

        //再把字符串变回对象就可以

        User user = gson.fromJson(s,User.class);

Object 成员方法:

        public static boolean equals(Object a, Object b)        先做非空判断,比较两个对象

        public static boolean isNull(Object ojb )        判断对象是否为null,为null返回true,反之flase

        public static boolean nonNull(Object obj)      判断对象是否为null,跟isNull结果相反

/*
 *  public BigInteger(int num,Random rd)       随机获取一个大整数,范围:[0,2 的 num 次方 -1]
 *  public BigInteger(String val)              获取指定大整数
 *  public BigInteger(String val,int radix)    获取指定进制的大整数
 *
 *  public static BigInteger valueOf(long val) 静态方法获取BigInteger对象,内部有优化
 *
 *   细节:
 *      对象一旦创建里面的数据不能发生改变
 * */
public static void main(String[] args) {
        /*
         *   public BigInteger(int num,Random rd)       随机获取一个大整数,范围:[0,2 的 num 次方 -1]
         *   public BigInteger(String val)              获取指定大整数
         *   public BigInteger(String val,int radix)    获取指定进制的大整数
         *
         *   public static BigInteger valueOf(long val) 静态方法获取BigInteger对象,内部有优化
         *
         *   细节:
         *      对象一旦创建里面的数据不能发生改变
         * */

        //1.随机获取一个大整数,范围:[0,2 的 num 次方 -1]
        Random rd = new Random();
        BigInteger bi1 = new BigInteger(10, rd);
        System.out.println(bi1);

        //2.获取指定大整数
        BigInteger bi2 = new BigInteger("8888888888888999999999998");
        System.out.println(bi2);

        //3.获取指定进制的大整数
        //字符串中的数字必须是整数,必须要跟进制吻合
        BigInteger bi3 = new BigInteger("101010101111001111", 2);
        System.out.println(bi3);

        //4.静态方法获取BigInteger对象,内部有优化
        //细节:
        //1.能表示的范围比较小,在long的取值范围之内,如果超出long的范围就不行了
        //2.在内部对常用的数字:-16 ~ 16进行了优化
        //提前把-16~16先创建好BigInteger的对象,如果多次获取,不会创建新的

//        BigInteger bi5 = BigInteger.valueOf(16);
//        BigInteger bi6 = BigInteger.valueOf(16);
//        System.out.println(bi5==bi6);              //true
//
//        BigInteger bi7 = BigInteger.valueOf(17);
//        BigInteger bi8 = BigInteger.valueOf(17);
//        System.out.println(bi7==bi8);             //false

        //5.对象一旦创建内部的数据不能发生改变
        BigInteger bi9 = BigInteger.valueOf(1);
        BigInteger bi10 = BigInteger.valueOf(2);

        BigInteger result = bi9.add(bi10);
        System.out.println(result);
        //此时,他不会修改参与计算的BigInteger对象中的值,而是产生了一个新的BigInteger对象,用来记录3
        System.out.println(bi9 == result);  //false
        System.out.println(bi10 == result); //false
    }

 

 

 public static void main(String[] args) {
        /*
        * public BigInteger add(BigInteger val)         加法
        * public BigInteger subtract(BigInteger val)    减法
        * public BigInteger multiply(BigInteger val)    乘法
        * public BigInteger divide(BigInteger val)      除法,获取商
        * public BigInteger[] divideAndReminder(BigInteger val)  除法 获取商和余数
        * public boolean equals(Object x)               比较是否相同
        * public BigInteger pow(int exponent)           次幂
        * public BigInteger max/min(BigInteger val)     返回较大值/较小值
        * public int intValue(BigInteger val)           转为int类型整数,超出范围数据有误
        * */

        //1.先创建两个BigInteger对象
        BigInteger bi1=  BigInteger.valueOf(10);
        BigInteger bi2=  BigInteger.valueOf(2);

        //2.public BigInteger add(BigInteger val)         加法
        BigInteger bi3 = bi1.add(bi2);
        System.out.println(bi3);
        System.out.println("-----------------------");

        //3.public BigInteger subtract(BigInteger val)    减法
        BigInteger bi4 = bi1.subtract(bi2);
        System.out.println(bi4);
        System.out.println("-----------------------");

        //4.public BigInteger multiply(BigInteger val)    乘法
        BigInteger bi5 = bi1.multiply(bi2);
        System.out.println(bi5);
        System.out.println("-----------------------");


        //5.public BigInteger divide(BigInteger val)      除法,获取商
        BigInteger bi6 = bi1.divide(bi2);
        System.out.println(bi6);
        System.out.println("-----------------------");

        //6.public BigInteger[] divideAndReminder(BigInteger val)  除法 获取商和余数
        BigInteger[] bi7 = bi1.divideAndRemainder(bi2);
        System.out.println(bi7[0]);
        System.out.println(bi7[1]);
        System.out.println("-----------------------");

        //7.public boolean equals(Object x)               比较是否相同
        boolean b = bi1.equals(bi2);
        System.out.println(b);
        System.out.println("-----------------------");

        //8.public BigInteger pow(int exponent)           次幂
        BigInteger bi8 = bi1.pow(4);
        System.out.println(bi8);
        System.out.println("-----------------------");

        //public BigInteger max/min(BigInteger val)     返回较大值/较小值

        BigInteger bi9 = bi1.max(bi2);
        System.out.println(bi9);
        System.out.println("-----------------------");

        // public int intValue(BigInteger val)           转为int类型整数,超出范围数据有误
        int i = bi1.intValue();
        System.out.println(i);

        double v = bi1.doubleValue();
        System.out.println(v);

    }

 BigDecimal:

 

 public static void main(String[] args) {
        /*
        * 构造方法获取BIgDecimal对象
        *   public BigDecimal(double val)
        *   public BigDecimal(String val)
        *
        *   静态方法获取BigDecimal对象
        *       public static BigDecimal valueOf(double val)
        *
        * */

        //1.通过传递double类型的小数来创建对象
        //细节:
        //这种方式有可能是不精确的,所以不建议使用
        BigDecimal bd1= new BigDecimal(0.01);
        BigDecimal bd2= new BigDecimal(0.09);
        System.out.println(bd1);
        System.out.println(bd2);
        BigDecimal bd3 = bd1.add(bd2);
        System.out.println(bd3);

        //通过传递字符串表示的小数来创建对象
        BigDecimal bd4= new BigDecimal("0.01");
        BigDecimal bd5= new BigDecimal("0.09");
        System.out.println(bd4);
        System.out.println(bd5);
        BigDecimal bd6 = bd4.add(bd5);
        System.out.println(bd6);

        //3.通过静态方法获取对象
        BigDecimal bd7 = BigDecimal.valueOf(10.0);//10.0
        BigDecimal bd8 = BigDecimal.valueOf(10.0);
        System.out.println(bd7==bd8);

        //细节:
        //1.如果要表示的数字不大,没有超出double的范围,建议使用静态方法
        //2.如果要表示的数字比较大,超出了double范围,建议使用构造方法
        //如果我们传递的是0~10之间的整数,包含0和10,那么方法会返回已经创建好的对象,不会重新new
    }

BIgDecimal  RoundingMode

枚举:

UP:远离0的方向舍入的舍入模式,正数向上,负数向下

DOWN:向0方向舍入的舍入模式,正数向下,负数向上,与UP相反

CEILING:向正无限大方向舍入的舍入模式,数轴正方向

FLOOR:向负无限大方向舍入的舍入模型,数轴负方向

HALF_ UP:四舍五入。

HALF_DOWN:向最接近数字方向舍入的舍入模式,如果与两个相邻数字距离相等,则向下舍入

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值