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

news/2024/7/16 8:29:35 标签: 开发语言, jvm, java, ide

1.常见API

1.1 Math类

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

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

1.1.2 练习

java">// 判断有多少水仙花数
        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 总结


http://www.niftyadmin.cn/n/105540.html

相关文章

决策树在sklearn中的实现

目录 一.模块sklearn.tree 二.建模基本流程 三.DecisionTreeClassifier重要参数 1.criterion 2.random_state & splitter 3.剪枝参数max_depth 4.剪枝参数min_samples_leaf & min_samples_split 5.max_features & min_impurity_decrease 6.class_weight …

轻松入门H3C无线AC上线AP【入门篇】

我们知道华三的最新模拟器支持了无线AC的配置&#xff0c;今天就浅浅的出个无线AC的教程&#xff0c;你上也会的那种。今天我们模拟的是二层环境下&#xff0c;笔者准备了2个AP&#xff0c;以此展示AP上线到AC的教程&#xff0c;并且用手机测试WiFi连接正常&#xff0c;且客户端…

【Ap AutoSAR入门与实战开发04】:服务的需求定义以及如何在arxml中定义服务

总目录链接==>> AutoSAR入门和实战系列总目录 文章目录 1 服务的需求定义2 服务的arxml定义2.1 事件中的数据类型定义我们在「【Ap AutoSAR入门与实战开发03】-【Ap_s2s模块02】:到底什么是基于信号,什么是基于服务,两者的主要区别是什么?」的文章中讲到了讲到了服…

Linux文件属性--软链接和硬链接

文章目录软链接硬链接软链接和硬链接的区别软链接 软链接&#xff08;Soft Link&#xff09;又叫符号链接&#xff08;Symbolic Link &#xff09;&#xff0c;是linux特殊文件的一种&#xff0c;文件类型为l,它的数据是它所链接的文件或目录的路径。软链接可以跨磁盘和 分区&…

Java还值得选择吗?

自1995年Java问世&#xff0c;到2023年已经差不多存在了28年。作为高级编程语言&#xff0c;他的生命周期相比很多编程语言都长&#xff0c;也见证了很多编程语言的辉煌时刻&#xff0c;不过Java始终都是名列前茅。 Java的主要优势在于其一次编写、随处运行。简单来讲&#xf…

S3C2440开发环境搭建

拿出了之前的S3C2440开发板&#xff0c;然后把移植uboot、移植内核、制作根文件系统、设备树编写驱动等几项再做一遍&#xff0c;这篇文章先记录下环境搭建过程&#xff0c;以及先把现成的uboot、内核、根文件系统下载进去&#xff0c;看看开发板还能不能用&#xff0c;先熟悉一…

【自监督论文阅读笔记】Emerging Properties in Self-Supervised Vision Transformers

&#xff08;2021&#xff09; Abstract 在本文中&#xff0c;我们质疑 自监督学习是否为 Vision Transformer (ViT) [16] 提供了与卷积网络 (convnets) 相比突出的新属性。除了 使自监督方法适应这种架构的效果 特别好之外&#xff0c;我们还进行了以下观察&#xff1a;首先&…

Unity脚本 --- 常用API(类)--- GameObject类 和

第一部分 --- GameObject类 1.在Hierarchy 层级面板中添加游戏物体其实就相当于在场景中添加游戏物体 2.每一个场景都有一个自己的Hierarchy层级面板&#xff0c;用来管理场景中的所有游戏物体 3.是的&#xff0c;我们可以创建多个场景 1.首先上面这两个变量都是布尔变量&am…