Java基础:常见API(Math,System,Runtime,Object,BigInteger,BigDecima)

1.常见API

1.1 Math类

向上取整是向着数轴右边走的意思, 负数也是. 也可以叫进一法, 不论正数负数都会往右走一.

向下取整是向着数轴左边走. 也可以叫去尾法, 不论正负数都会将小数点后的数字去掉.

1.1.2 练习

// 判断有多少水仙花数
        int count = 0;
        for (int i = 100; i < 1000; i++) {
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100 % 10;
            if (i == Math.pow(ge, 3) + Math.pow(shi, 3) + Math.pow(bai, 3)){
                count++;
            }
        }
        System.out.println("有" + count + "个水仙花数");

1.2 System类

System.exit(), 里面写0表示虚拟机正常停止, 写1表示虚拟机异常停止.

如果源数组和目的地数组都是基本数据类型, 那么两者的数据类型必须一致. 否则会报错.

源数组和目的地数组的长度也必须考虑, 如果超出则会报错.

如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型.

1.3Runtime

Runtime表示当前虚拟机的运行环境

1.4 Object

Object只有无参构造方法

1.4.1 常用方法

(1) toString

方法返回的字符串是: 包名+类名+@+地址值.

细节:

System.out.println和toString一样也能打印出地址值

system:类名out:静态变量
system.out:获取打印的对象println( ):方法
参数:表示打印的内容核心逻辑:
当我们打印一个对象的时候,底层会调用对象的toString方法,把对象变成字符串。然后再打印在控制台上,打印完毕换行处理。

如果不想打印地址值的话, 我们可以重写toString方法.(ptg插件可以在生成javabean的时候生成toString方法)

当sout中传递过来是一个对象时,会在底层使用toString方法

(2) equals()

只能比较地址值是否相同, 如果相比属性值, 可以重写equals方法. alt+insert中可以选择自动生成.

(3) clone

把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象复制

细节 : 我们不能直接使用clone, 因为它是protect的, 所以我们需要在封装的类中重写clone方法, 并且在开头要implements一个cloneable接口(该接口中不含抽象方法). 

Cloneable
如果一个接口里面没有抽象方法
表示当前的接口是一个标记性接口
现在Cloneable表示一旦了实现,那么当前类的对象就可以被克隆
如果没有实现,当前类的对象就不能克隆

实现clone的步骤:

1.重写0bject中的clone方法
2.让javabean类实现Cloneable接口
3.创建原对象并调用clone就可以了。

浅克隆

浅克隆是只克隆地址值, 缺点是当其中任一对象的字符串或数组中的值发生变化, 另一个也发生相应的变化.

深克隆

深克隆是直接创建一个新的数据, 将新的数组的地址值赋给新的对象. 字符串的地址值相同是因为串池复用.

object的clone方法是浅克隆.

想要实现深克隆需要用到第三方工具

1.5 objects

Objects是一个工具类,提供了一些方法去完成一些功能。

1.6 BigInteger

1.6.1 构造方法

(1) BigInteger(4, r), 表示[0, 15]中的随机数, 15 = 2^4 - 1.

(2) 第二个构造方法中的参数必须是整数

(3) 1.字符串中的数字必须是整数 2.字符串中的数字必须要跟进制吻合。比如二进制中,那么只能写0和1,写其他的就报错。

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

1.6.2 基本使用

biginteger是对象, 是不能使用加减乘除的.

1.6.3 存储方式

将大整数对应的二进制数以32位进行分组, 再将3组的二进制值转为各自对应的十进制值, 最后再按照顺序放入数组当中.

signum表示大整数的正负, 为-1则是负数, 0则是0, 1则是正数.

 1.6.4 总结

1.7 BigDecima

1.7.1构造方法

二进制的整数部分我们知道是通过每一位的二进制数乘以2的次方后的数相加得到, 次幂从右往左递减, 小数也是如此, 次幂从右往左递减(-1, -2, -3...), 所以有些特定的小数部分很难表达出来, 需要占用很多字节. 但是long和double的字节数都有限, 所以会出现计算不准确的情况.

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

1.7.2基本使用

1.7.3 存储方式

先将String中每一个符号进行拆分, 然后查找对应的ASCII码表对应的数字放入数组当中.

1.7.4 总结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值