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表示四舍五入。