常见的API

常见的 API

Math

从 JDK 版本 1 开始的, 用来计算的一些方法
这里面定义了两个常量的 PI 和 E 这两个是最接近 pi 的值和最接近对数的值

image.png

  1. Abs (int a ) 取绝对值
  2. Ceil (double a)向上取整
  3. Floor (double a )向下取整
  4. Round (float a)四舍五入
  5. Max (int a, int b) 取最大值
  6. Pow (double a, double b) a 的 b 次幂
  7. Random () 返回值为 double 的随机数, 范围是[ 0.0 , 1.0 ); ]
    举例
public static void main(String[] args) {System.out.println(Math.max(1, 2));// 返回两个数中较大的数System.out.println(Math.min(1, 2));// 返回两个数之间较小的数System.out.println(Math.abs(-1)); // 返回一个数的绝对值System.out.println(Math.ceil(1.5));// 向上取整,ceil天花板的意思System.out.println(Math.floor(1.5));// 向下取整,floor地板的意思,正好对应着向上取整和向下取整System.out.println(Math.round(1.5));// round四舍五入System.out.println(Math.round(1.4));// round四舍五入System.out.println(Math.pow(10, 2)); // 对一个数进行平方,a的b次方System.out.println(Math.sqrt(100)); // 对一个数进行开方System.out.println(Math.random()); // 返回0-1的整数}

其中有一个点需要注意
Abs
image.png
这属于一个小 bug
当我们的数据比较大的时候, 我们可以用 Math, absExact 来进行使用, 这个并不能纠错, 但是可以提示我们错误, 原来的是不提示错误直接输出了.

开平方 sqrt, 开立方根 cbrt

image.png

System

我们通过这个 System 名直接调用
image.png
我们查看这个 java 的参考文档,发现这个 System 属于这个 java.long 包下, 所以不需要我们额外的进行导包, 我们可以直接进行调用.

[!info]
下面我们对其几个常用的方法进行研究

Exit

0, 表示当前虚拟机是正常停止
非 0, 表示当前虚拟机是非正常停止

常见的用法
System.exit(0);
System.exit(1);

CurrentTimeMills

参考文档中给出的解释是

public static long currentTimeMillis()
以毫秒为单位返回当前时间。 请注意,虽然返回值的时间单位是毫秒,但值的粒度取决于底层操作系统,并且可能更大。 例如,许多操作系统以几十毫秒为单位测量时间。 
有关“计算机时间”和协调世界时(UTC)之间可能出现的轻微差异的讨论,请参阅类Date的说明。 
结果 
当前时间与UTC时间1970年1月1日午夜之间的差异,以毫秒为单位。 

计算机的时间原点
image.png

由于时区的影响, 我们获取的时间原点是
image.png
1 s=1000 ms
1 ms=1000 us
1 us=1000 ns

        System.out.println("current time ");System.out.println(System.currentTimeMillis());

我们通过这个代码可以获得这个程序执行所需的总时间, 之后我们可以参考这个 Date 类中的时间转化, 将这个时间戳转化为具体的时间值
附上这个时间戳转化的网站
时间戳转化

[! warning]
值得注意的是这个 currentTimeMillis 获得的是这个毫秒的时间, 我们在转化的时候要注意

Arraycopy

int [] arr1 = {1,2,3,4,5,6};
int [] arr2 = new int[6];
System.arraycopy(arr1,0,arr2,0,6);

把 arr 1 数组中的数据拷贝到 arr2中

  1. 参数一: 数据源,要拷贝的数据从哪个数组而来
  2. 参数二: 从数据源数组中的第几个索引开始拷贝
  3. 参数三: 目的地,我要把数据拷贝到哪个数组中
  4. 参数四: 目的地数组的索引。
  5. 参数五: 拷贝的个数
int [] arr1 = {1,2,3,4,5,6,7,8,9,10};
int [] arr2 = new int[10];
System.arraycopy(arr1,0,arr2,4,3);
//0 0 0 0 1 2 3 0 0 0

注意点

  1. 拷贝的对象可以是基本数据类型, 也可以是引用数据类型
  2. 如果这个拷贝的数组都是基本数据类型, 那么两者的数据类型必须一模一样, 否则就会报错
  3. 在拷贝的时候数组不能越界
  4. 如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型, 比如说 Student 类型可以赋值给 Person 类型

Runtime

Runtime 也是属于 java.long 包下的, 所以我们并不需要对其进行单独的导包

  • 每个 Java 应用程序都有一个类 Runtime 实例,它允许应用程序与运行应用程序的环境进行交互。可以从 getRuntime 方法获得当前运行时。
    Runtime 和后面的多线程是有联系的, 在那一章节里我在详细的对它进行解释
    [[多线程]]

GetRuntime ()

返回当前应用程序所关联的的系统进程

public static Runtime getRuntime()//这是一个静态函数

Runtime 类的构造方法是私有的(private),这意味着无法通过使用 new 关键字来实例化(构建)Runtime 类的对象
Runtime类提供了一个静态方法GetRuntime(),该方法返回Runtime类的唯一实例。通过调用GetRuntime()方法,您可以获取对该实例的引用

[!note]
常用方法举例

    public static void main(String[] args) throws IOException {System.out.println(Runtime.getRuntime().availableProcessors());// 获取cpu的线程数System.out.println(Runtime.getRuntime().freeMemory());// 获取空闲内存System.out.println(Runtime.getRuntime().totalMemory());// 获取总内存System.out.println(Runtime.getRuntime().maxMemory());// 获取最大内存
=Runtime.getRuntime().exec("shutdowm -s -t 时间");//关机按钮Runtime.getRuntime().exec("shutdowm -a");//停止关机}

其中对于这个 execAPI 文档里面是这样解释的

public Process exec​(String command) throws IOException
在单独的进程中执行指定的字符串命令。 
这是一种方便的方法。 调用窗体exec(command)行为与调用exec (command, null, null) 。 参数 
command - 指定的系统命令。 
结果 
用于管理子进程的新Process对象 

执行该方法, 系统会爆出异常, 因此需要我们主动的去抛出异常, 或者需要我们进行这个 try catch 捕获异常
[[异常]]

Object

Object 是 java 中的顶级父类,所有的类都直接或间接的继承于 Object 类
Object 只有一个空参构造,我们通过空参构造进行创建对象
我们自己新建一个类,它默认继承这个 object 类的

image.png

ToString

Object.ToString () 返回的是一个字符串—包名加类名, 加地址值
当我们打印一个对象的时候, 底层会调用, 对象的 toString 方法, 把对象变成字符串.
java 是一个面向对象语言, 而所有的对象都继承于这个 object 类, 所以所有的对象都具有这个 toString 方法, 我们在使用这个 System.out.println 方法的时候就是默认打印这个对象的 toString 方法

Equals

我们查看这个方法的源代码发现这个是通过 this== object 来进行比较的, 这种比较是比较的两个对象的地址, 但是大多数情况下我们是比较的对象里面的内容, 因此我们在这种情况下我们一般选择进行重写
image.png

image.png

Clone

浅克隆

浅克隆是将 A 对象的属性值, 拷贝给 B 对象, 也叫对象拷贝, 对象复制, 对象的变量属性地址是相同的

深克隆

深克隆对于基本数据类型也是拷贝地址, 但是对于引用数据类型, 就是新建一个空间, 然后进行存放数据的, 两者之间的地址内容是不相同的
image.png

父类的 clone 是默认浅克隆, 如果我们想实现这个深克隆, 我们要自己进行重写.

由于对象的数据类型不是确定的, 一维数组有一维数组的写法, 二维数组有二维数组的写法, 为了方便我们进行编程, 我们通过第三方的工具可以实现这个重写功能;

Objects

在 java 中我们不能用字符 null 来调用方法否则这个系统会报错
Objects 类所在包是在 java. Util 包下,因此在使用的时候需要进行导包。并且 Objects 类是被 final 修饰的,因此该类不能被继承。
暂时先不了解,等用到自己在查阅参考文档

BigInteger 类

常考博文-我写的

引入

Java 整数中只有四种类型, byte, short, int, long
其中分别是 1,2,4,8 个字节数
平时在存储整数的时候,Java 中默认是 int 类型,int 类型有取值范围:-2147483648 ~ 2147483647。如果数字过大,我们可以使用 long 类型,但是如果 long 类型也表示不下怎么办呢?
就需要用到 BigInteger,可以理解为:大的整数。
有多大呢?理论上最大到 42 亿的 21 亿次方基本上在内存撑爆之前,都无法达到这个上限。

概述

BigInteger 所在包是在 java. Math 包下,因此在使用的时候就需要进行导包。我们可以使用 BigInteger 类进行大整数的计算
对象一旦创建, 内部的对象值是不能修改的

构造方法

image.png

public BigInteger(int num, Random rnd) 		//获取随机大整数,范围:[0 ~ 2的num次方-1]
public BigInteger(String val) 				//获取指定的大整数
public BigInteger(String val, int radix) 	//获取指定进制的大整数下面这个不是构造,而是一个静态方法获取BigInteger对象
public static BigInteger valueOf(long val) 	//静态方法获取BigInteger的对象,内部有优化
BigInteger test = new BigInteger(4,new Random());

这种构造方法构造的不是一个确定的整数, 而是一个随即数

BigInteger test1 = new BigInteger("99999999999999999999999");

这种构造方法可以构造指定大小的数字, 引号必须是整数,

BigInteger test3 = new BigInteger("100",2);

可以构建指定进制的数字, 引号里面的数字必须符合进制

BigInteger test4 = BigInteger.valueOf(9999999999999999999999999);

创建静态对象, 但是这个静态对象的范围比较小, 我们一般不用

常见成员方法

虽然说这个对象简称大数, 但是实际上它并不是一个数, 而是一个对象, 因为 java 不允许对象使用操作符, 因此操作大数的时候必须使用方法调用, 折叶就是为什么要使用这个 add,substract 的原因

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

BigInterget 对象的值是不能进行修改的, 而是我们产生了一个新的 BigInterger 对象的值

//5.对象一旦创建内部的数据不能发生改变
BigInteger bd9 =BigInteger.valueOf(1);
BigInteger bd10 =BigInteger.valueOf(2);
//此时,不会修改参与计算的BigInteger对象中的借,而是产生了一个新的BigInteger对象记录
BigInteger result=bd9.add(bd10);
System.out.println(result);//3

BigDecimal 类

引入概论

首先我们来分析一下如下程序的执行结果

public class BigDecimalDemo01 {public static void main(String[] args) {System.out.println(0.09 + 0.01);//0.09999999999999999}}

这样的结果其实就是一个丢失精度的结果
如何解决呢, 我们可以使用这个 BigDecimal 来进行计算
BigDecimal 类能计算出准确结果。
调用 BigDecimal. Valueof (n, e)返回 BigDecimal 示例,其值为nx 10 e 次方
利用这个大数进行浮点数的减法运算
当我们进行浮点数的减法运算的时候可能会丢失精度, 比如 2.0-1.1=0.8999999999999
但是如果我们用这个 BigDecimal. Substract 的话就不会丢失结果
BigDecimal. ValueOf (2, 0 ). Substract (BigDecimal. ValueOf (11,
运算的结果精确为0.9

常见的构造方法

1576134383441.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/81072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yarn的资源优化的调整参数

yarn的资源优化的调整参数 官网: https://hadoop.apache.org/docs/r3.3.6/hadoop-yarn/hadoop-yarn-common/yarn-default.xml 没事多看官网哈 yarn.nodemanager.resource.memory-mb:用于设置NodeManager节点的总内存容量,单位为MB。根据集…

PostgreSQL缓存管理

缓冲区管理器、存储和后端进程之间的关系 缓存管理结构 PostgreSQL 缓冲区管理器由buffer table、buffer descriptors和buffer pool组成。buffer pool层存储表和索引等数据文件页,以及空闲空间映射和可见性映射。buffer pool是一个数组,每个槽存储数据文…

TensorFlow与pytorch特定版本虚拟环境的安装

TensorFlow与Python的版本对应,注意,一定要选择对应的版本,否则会让你非常痛苦,折腾很久搞不清楚原因。 建议使用国内镜像源安装 没有GPU后缀的就表示是CPU版本的,不加版本就是最新 pip install tensorflow -i https:…

150.逆波兰表达式求值

目录 一、题目 二、分析代码 三、中缀表达式转后缀表达式 一、题目 150. 逆波兰表达式求值 - 力扣&#xff08;LeetCode&#xff09; 二、分析代码 class Solution { public:int evalRPN(vector<string>& tokens) {stack<int>s;for(auto ch:tokens){if(ch!…

车载软件架构 —— AUTOSAR Vector SIP包(一)

车载软件架构 —— AUTOSAR Vector SIP包(一) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在…

进程程序替换

✅<1>主页&#xff1a;&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;Linux——进程替换 ☂️<3>开发环境&#xff1a;Centos7 &#x1f4ac;<4>前言&#xff1a;我们创建子进程的目的是什么&#xff1f;想让子进程帮我们执行特定的…

Docker搭建ELK日志采集服务及Kibana可视化图表展示

架构 ES docker network create elkmkdir -p /opt/ELK/es/datachmod 777 /opt/ELK/esdocker run -d --name elasticsearch --net elk -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -v /opt/ELK/es/plugins:/usr/share/elasticsearch/plugins -v /opt/…

嵌入式C 语言中的三块技术难点

​ C 语言在嵌入式学习中是必备的知识&#xff0c;甚至大部分操作系统都要围绕 C 语言进行&#xff0c;而其中有三块技术难点&#xff0c;几乎是公认级别的“难啃的硬骨头”。 今天就来带你将这三块硬骨头细细拆解开来&#xff0c;一定让你看明白了。 0x01 指针 指针是公认…

redis实战-redis实现异步秒杀优化

秒杀优化-异步秒杀思路 未优化的思路 当用户发起请求&#xff0c;此时会请求nginx&#xff0c;nginx会访问到tomcat&#xff0c;而tomcat中的程序&#xff0c;会进行串行操作&#xff0c;分成如下几个步骤 1、查询优惠卷 2、判断秒杀库存是否足够 3、查询订单 4、校验是否是一…

MySQL——主从复制

简介 在实际的生产中&#xff0c;为了解决Mysql的单点故障已经提高MySQL的整体服务性能&#xff0c;一般都会采用「主从复制」。 主从复制开始前有个前提条件&#xff1a;两边的数据要一样&#xff0c;主必须开启二进制日志 dump thread 线程 基于位置点从是否需要开启二进…

计算机组成原理——基础入门总结(一)

本帖更新一些关于计算机组成原理的重点内容。由于博主考研时并不会考这门课&#xff0c;但是考虑到操作系统中又很多重要晦涩的概念涉及很多诸如内存、存储器、磁盘、cpu乃至各种寄存器的知识&#xff0c;此处挑选一些核心的内容总结复盘一遍——实现声明&#xff1a;本帖的内容…

Python统计pdf中英文单词的个数

之前的文章提供了批量识别pdf中英文的方法,详见【python爬虫】批量识别pdf中的英文,自动翻译成中文上。以及自动pdf英文转中文文档,详见【python爬虫】批量识别pdf中的英文,自动翻译成中文下。    本文实现python统计pdf中英文字符的个数。 文章目录 一、要统计字符的pdf…

第16篇ESP32 platformio_arduino框架 wifi联网_连接WiFi热点并连接tcp server收发数据进行通讯

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 ​​​​​​第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验 第6篇:ESP32连接无源喇叭播…

许可分析 license分析 第十一章

许可分析是指对软件许可证进行详细的分析和评估&#xff0c;以了解组织内部对软件许可的需求和使用情况。通过许可分析&#xff0c;可以帮助组织更好地管理和优化软件许可证的使用。以下是一些可能的许可分析方法和步骤&#xff1a; 软件许可证监管合规性&#xff1a;严格遵守软…

Linux 文件创建、查看

touch、cat、more命令 ①touch命令——创建文件 ②cat命令——查看文件内容全部显示 这是txt.txt文件内容 使用cat命令查看 ③more命令——查看文件内容支持翻页 在查看的过程中&#xff0c;通过空格翻页&#xff0c;通过q退出查看

C语言练习题解析(2)

&#x1f493;博客主页&#xff1a;江池俊的博客⏩收录专栏&#xff1a;C语言刷题专栏&#x1f449;专栏推荐&#xff1a;✅C语言初阶之路 ✅C语言进阶之路&#x1f4bb;代码仓库&#xff1a;江池俊的代码仓库&#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐ 文…

蓝桥杯2023年第十四届省赛真题-更小的数--题解

目录 蓝桥杯2023年第十四届省赛真题-更小的数 题目描述 输入格式 输出格式 样例输入 样例输出 提示 【思路解析】 【代码实现】 蓝桥杯2023年第十四届省赛真题-更小的数 时间限制: 3s 内存限制: 320MB 提交: 895 解决: 303 题目描述 小蓝有一个长度均为 n 且仅由数字…

C2基础设施威胁情报对抗策略

威胁情报是指在信息安全和安全防御领域&#xff0c;收集、分析和解释与潜在威胁相关的信息&#xff0c;以便预先发现并评估可能对组织资产造成损害的潜在威胁&#xff0c;是一种多维度、综合性的方法&#xff0c;其通过信息的收集、分析和研判&#xff0c;帮助组织了解可能对其…

C++---继承

继承 前言继承的概念及定义继承的概念继承定义继承关系和访问限定符 基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元继承与静态成员**多重继承**多继承下的类作用域菱形继承虚继承使用虚基类 支持向基类的常规类型转换 前言 在需要写Father类和Mother…

征战开发板从无到有(三)

接上一篇&#xff0c;翘首已盼的PCB板子做好了&#xff0c;管脚约束信息都在PCB板上体现出来了&#xff0c;很满意&#xff0c;会不会成为爆款呢&#xff0c;嘿嘿&#xff0c;来&#xff0c;先看看PCB裸板美图 由于征战开发板电路功能兼容小梅哥ACX720&#xff0c;大家可以直…