常见的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.rhkb.cn/news/135072.html

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

相关文章

【微信小程序】文章设置

设置基本字体样式:行高、首行缩进 font-size: 32rpx;line-height: 1.6em;text-indent: 2em;padding: 20rpx 0;border-bottom: 1px dashed var(--themColor); 两端对齐 text-align: justify; css文字两行或者几行显示省略号 css文字两行或者几行显示省略号_css…

【C进阶】指针和数组笔试题解析

做题之前我们先来回顾一下 对于数组名的理解:除了以下两种情况,数组名表示的都是数组首元素的地址 (1)sizeof(数组名):这里的数组名表示整个数组 (2)&(数…

Kakfa - Producer机制原理与调优

Producer是Kakfa模型中生产者组件,也就是Kafka架构中数据的生产来源,虽然其整体是比较简单的组件,但依然有很多细节需要细品一番。比如Kafka的Producer实现原理是什么,怎么发送的消息?IO通讯模型是什么?在实…

Prometheus黑盒测试模块,监控TCP端口+ HTTP/HTTPS路由状态

文章目录 一、黑盒测试使用场景二、安装blackbox-exporter三、监控TCP端口四、监控HTTP/HTTPS路由五、最后分享几款Grafana模板 一、黑盒测试使用场景 官方下载地址 blackbox-exporter是Prometheus官方提供的一个黑盒测试的解决方案,可用于以下使用场景&#xff1a…

大数据-玩转数据-Flink恶意登录监控

一、恶意登录 对于网站而言,用户登录并不是频繁的业务操作。如果一个用户短时间内频繁登录失败,就有可能是出现了程序的恶意攻击,比如密码暴力破解。 因此我们考虑,应该对用户的登录失败动作进行统计,具体来说&#x…

SpringBoot启动方式

SpringBoot启动方式 springboot的启动经过了一些一系列的处理&#xff0c;我们先看看整体过程的流程图 SpringBoot的启动方式 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><…

线性代数基础-矩阵

八、矩阵的基础概念 1.矩阵 我们忘掉之前行列式的一切&#xff0c;列一种全新的数表&#xff0c;虽然长得很像&#xff0c;但是大不相同&#xff0c;首先一个区别就是矩阵不能展开成一个值&#xff0c;这里不讨论矩阵的空间意义 { a 11 x 1 a 12 x 2 a 13 x 3 . . . a 1…

求解灰度直方图,如何绘制灰度直方图(数字图像处理大题复习 P1)

文章目录 1. 画 X 轴2. 画直方图3. Complete 视频原链接 数字图像处理期末考试大题 B站链接 1. 画 X 轴 2. 画直方图 有几个 0 就在图上画多高&#xff0c;同理有几个 1 &#xff0c;X1 的地方就画多高 3. Complete 这里的情况比较平均&#xff0c;一般来说不会这么平均&a…

CSS选择器笔记

A plate #id #fancy A B plate apple #id A #fancy pickle .classname .small A.className orange.small #id.className #big.wide A,B both plate,bento * all A * plate * AB 紧跟在盘子后的苹果 plate apple A~B 跟在盘子后面所有的泡菜 plate~b…

堆内存与栈内存

文章目录 1. 栈内存2. 堆内存3. 区别和联系参考资料 1. 栈内存 栈内存是为线程留出的临时空间 每个线程都有一个固定大小的栈空间&#xff0c;而且栈空间存储的数据只能由当前线程访问&#xff0c;所以它是线程安全的。栈空间的分配和回收是由系统来做的&#xff0c;我们不需…

LeetCode 周赛上分之旅 #45 精妙的 O(lgn) 扫描算法与树上 DP 问题

⭐️ 本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问。 学习数据结构与算法的关键在于掌握问题背后的算法思维框架&#xff0c;你的思考越抽象&#xff0c;它能覆盖的问题域就越广&#xff0c;理解难度…

Qt基于paintEvent自定义CharView

Qt基于paintEvent自定义CharView 鼠标拖动&#xff0c;缩放&#xff0c;区域缩放&#xff0c; 针对x轴&#xff0c;直接上代码 charview.h #ifndef CHARVIEW_H #define CHARVIEW_H#include <QWidget> #include <QPainter> #include <QPaintEvent> #inclu…

unity学习第1天

本身也具有一些unity知识&#xff0c;包括Eidtor界面使用、Shader效果实现、性能分析&#xff0c;但对C#、游戏逻辑不太清楚&#xff0c;这次想从开发者角度理解游戏&#xff0c;提高C#编程&#xff0c;从简单的unity游戏理解游戏逻辑&#xff0c;更好的为工作服务。 unity201…

CMU 15-445 Project #3 - Query Execution(Task #1、Task #2)

文章目录 一、题目链接二、准备工作三、SQL 语句执行流程四、BusTub 表结构五、Task #1 - Access Method Executors5.1 顺序扫描执行器5.2 插入执行器5.3 删除执行器5.4 索引扫描执行器 六、Task #2 - Aggregation & Join Executors6.1 聚合执行器6.2 循环连接执行器6.3 索…

python 二手车数据分析以及价格预测

二手车交易信息爬取、数据分析以及交易价格预测 引言一、数据爬取1.1 解析数据1.2 编写代码爬1.2.1 获取详细信息1.2.2 数据处理 二、数据分析2.1 统计分析2.2 可视化分析 三、价格预测3.1 价格趋势分析(特征分析)3.2 价格预测 引言 本文着眼于车辆信息&#xff0c;结合当下较…

Linux的调试工具 - gdb(超详细)

Linux的调试工具 - gdb 1. 背景2. 开始使用指令的使用都用下面这个C语言简单小代码来进行演示&#xff1a;1. list或l 行号&#xff1a;显示文件源代码&#xff0c;接着上次的位置往下列&#xff0c;每次列10行。2. list或l 函数名:列出某个函数的源代码。3. r或run: 运行程序。…

7.前端·新建子模块与开发(自动生成)

文章目录 学习地址视频笔记自动代码生成模式开发增删改查功能调试功能权限分配 脚本实现权限分配 学习地址 https://www.bilibili.com/video/BV13g411Y7GS/?p15&spm_id_frompageDriver&vd_sourceed09a620bf87401694f763818a31c91e 视频笔记 自动代码生成模式开发 …

简单返回封装实体类(RespBean)

RespBean的作用 返回状态码&#xff0c;返回信息&#xff0c;返回数据 package com.example.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor public class RespBean {private lon…

AndroidStudio 安装与配置【安装教程】

1.下载软件 进入官网https://developer.android.google.cn/studio&#xff0c;直接点击下载 2.阅读并同意协议书 直接下滑至最底部 如果这里出现了无法访问 官方地址&#xff1a;https://redirector.gvt1.com/edgedl/android/studio/install/2022.3.1.19/android-studio-2022.…

Windows11系统C盘用户文件夹下用户文件夹为中文,解决方案

说明&#xff1a; 1. 博主电脑为Windows11操作系统&#xff0c;亲测有效&#xff0c;修改后无任何影响&#xff0c;软件都可以正常运行&#xff01; 2. Windows10系统还不知道可不可行&#xff0c;因为Windows11的计算机管理中没有本地用户和组&#xff0c;博主在csdn上看到很…