常用API

1、Math

开平方根号sqrt,立方根cbrt

test2:

2.system

拷贝时小细节:

3.Runtime(非静态,私有化,利用getruntime创建对象,只能创建一个对象)

4.Object与Objects

tostring方法结论(sout会隐式调用tostring)

sout核心逻辑:object默认打印的就是地址值

println源代码:

valueof:

(sout会隐式调用tostring)

equals(alt+insert选择哈希)

equals思考:

1

2、

string中equals先判断是不是字符串,不是字符串直接false;

stringbuilder中无equals,继承的是父类object中,默认比较两者地址值

object克隆 (浅克隆) 

因为clone受protect保护,需要重写

Cloneable是标记接口(其方法体为空),它用来表示一个类拥有某些希望具有的特征。实现Cloneable接口的类被标记为可克隆的,而且其对象可以使用Object类中定义的clone()方法克隆。如果没有实现Cloneable类对象,调用clone()就回抛出CloneNotSupportedException异常

类:

package clone;

import java.util.StringJoiner;

public class user implements Cloneable{
    //Cloneable表示一个标记
    private int id;
    private String userName;
    private String password;
    private String path;
    private int[] data;

    public user() {
    }

    public user(int id, String userName, String password, String path, int[] data) {
        this.id = id;
        this.userName = userName;
        this.password = password;
        this.path = path;
        this.data = data;
    }

    @Override
    public String toString() {
        return "编号为"+id+",用户名:"+userName+",密码为"+password+"游戏图片:"+path+",进度:"+arrtostring(data);
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        //为何重写?因为受 protected保护,只能在lang包或者子类中访问
        //相当于让java帮我们克隆
        return super.clone();
    }

    public String arrtostring(int []data){
        StringJoiner sj =new StringJoiner(",","[","]");
        for (int i = 0; i < data.length; i++) {
            int d = data[i];
            sj.add(d+"");
        }
        return sj.toString();
    }
}

测试类:

package clone;

public class objectdemo1 {
    public static void main(String[] args) throws CloneNotSupportedException {
        int []data = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0};
        user u1 = new user(1,"zhangsan","1234qwer","girl",data);
        //创建克隆对象
        user u2  = (user) u1.clone();

        System.out.println(u1);
        System.out.println(u2);
    }
}

深克隆重写方法:或者利用第三方工具

objects

BigInteger(表示一个大整数,有上限,42亿的21亿次方)

关于第四个方法:

BigInteger是一个对象,所以它不能直接加减乘除,只能利用方法进行计算

BigInteger存储原理

将数字转为二进制补码,每32位分一次

BigDecima:精确的小数表示,表示很大的小数

为什么小数会有不精准的情况:

有的小数部分的二进制过长,超过了int和float的定义长度就会发生这样舍弃的情况

不推荐用double创建,会导致不精确,用以下两种方法:

利用静态方法传递时,是整数时,且在0-10内(写的是整数实际上,是以0.0-10.0进行计算的),这时候的地址值相同,不会重新new如下图1。如果不是整数,都是通过new创建的BigDecima,所以地址值不同如下图2

                                                        图1

                                                        图2

Bigdecima的计算:

如果除不尽,不能用divide含一个参数的方法,要用最后一个方法,HALF_UP表示四舍五入。

RoundingMode.

Bigdecima的存储方式:如果有负号,要存储其ascii码,正数的话就不需要

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值