IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 常用API-(补充)Math、System、Arrays -> 正文阅读

[数据结构与算法]常用API-(补充)Math、System、Arrays

目录

一、引言

二、数学工具类——Math类

1、概念

2、具体方法

3、代码演示:

三、System类

1、概念

2、常用方法

3、代码演示(只演示常用的两种方法)

四、Arrays——数组类

1、概念

2、方法


一、引言

生未百年,死不孤独。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——马尔克斯

生命不止,声明不止,所以还没活够得我,抓紧又给大家分享点东西,今天给大家做一些关于常用API的补充。

关于常用API中String、StringBuilder、StringBuffer三者的知识点与联系,可以查阅我写的这篇博客。

点击这里链接:前往!

而关于常用API中Object类中的两个方法(toString、equals)的知识点分析,可以查阅这篇博客。

点击这里链接2:前往!

今天分享的知识点如下:

Math(数学工具类)、System类、Arrays类

让我们进入今天的小知识课堂:

二、数学工具类——Math类

1、概念

Math并不是一个构造函数,而是一个应用工具类,包含了许多的数学方法应用于计算机中。java中的Math类封装了很多与数学有关的属性与方法。(封装的知识:点击这里

2、具体方法

Math.PI//π的值,圆周率(3.1415926535898...)

Math.sqrt()//计算平方根

Math.cbrt()//计算立方根

Math.hypot(x,y)//计算 (x的平方+y的平方)的平方根(勾股定理还有人知道不)

Math.pow(a,b)//计算a的b次方

Math.exp(x)//计算e^x的值

Math.max();//计算最大值

Math.min();//计算最小值

Math.abs//求绝对值

Math.ceil//返回相比原数更大的值

Math.floor//返回相比原数更小的值

Math.random //取得一个大于或者等于0.0小于不等于1.0的随机数[0,1)

Math.rint //四舍五入 返回double值

Math.round //四舍五入 float时返回int值,double时返回long值

Math.nextUp(a) //返回比a大一点点的浮点数(右极限??)

Math.nextDown(a) //返回比a小一点点的浮点数(左极限??)

Math.nextAfter(a,b) //返回(a,b)或(b,a)间与a相邻的浮点数 b可以比a小

......

方法还有很多,在帮助文档中可以看到还有许多的封装方法等待着你!!(帮助文档没有的,可以私信我发给你)

3、代码演示:

public class Demo {
    public static void main(String[] args) {
// Math.sqrt()//计算平方根 Math.cbrt()//计算立方根 Math.hypot(x,y)//计算 (x的平方+y的平方)的平方根

        System.out.println("Math.sqrt(16)----:"+Math.sqrt(16));//4.0
        System.out.println("Math.cbrt(8)----:"+Math.cbrt(8));//2.0
        System.out.println("Math.hypot(3,4)----:"+Math.hypot(3,4));//5.0



// Math.pow(a,b)//计算a的b次方 Math.exp(x)//计算e^x的值

        System.out.println("------------------------------------------");
        System.out.println("Math.pow(3,2)----:"+Math.pow(3,2));//9.0
        System.out.println("Math.exp(3)----:"+Math.exp(3));//20.085536923187668




//Math.max();//计算最大值 Math.min();//计算最小值

        System.out.println("------------------------------------------");
        System.out.println("Math.max(2.3,4.5)----:"+Math.max(7,15));//15
        System.out.println("Math.min(2.3,4.5)----:"+Math.min(2.3,4.5));//2.3



//Math.abs求绝对值

        System.out.println("------------------------------------------");
        System.out.println("Math.abs(-10.4)----:"+Math.abs(-10.4));//10.4
        System.out.println("Math.abs(10.1)----:"+Math.abs(10.1));//10.1



//Math.ceil返回大的值

        System.out.println("------------------------------------------");
        System.out.println("Math.ceil(-10.1)----:"+Math.ceil(-10.1));//-10.0
        System.out.println("Math.ceil(10.7)----:"+Math.ceil(10.7));//11.0
        System.out.println("Math.ceil(-0.7)----:"+Math.ceil(-0.7));//-0.0
        System.out.println("Math.ceil(0.0)----:"+Math.ceil(0.0));//0.0
        System.out.println("Math.ceil(-0.0)----:"+Math.ceil(-0.0));//-0.0
        System.out.println("Math.ceil(-1.7)----:"+Math.ceil(-1.7));//-1.0



//Math.floor返回小的值

        System.out.println("------------------------------------------");
        System.out.println("Math.floor(-10.1)----:"+Math.floor(-10.1));//-11.0
        System.out.println("Math.floor(10.7)----:"+Math.floor(10.7));//10.0
        System.out.println("Math.floor(-0.7)----:"+Math.floor(-0.7));//-1.0
        System.out.println("Math.floor(0.0)----:"+Math.floor(0.0));//0.0
        System.out.println("Math.floor(-0.0)----:"+Math.floor(-0.0));//-0.0



//Math.random 取得一个大于或者等于0.0小于不等于1.0的随机数[0,1)

        System.out.println("------------------------------------------");
        System.out.println("Math.random()----:"+Math.random());//输出[0,1)间的随机数 0.8979626325354049
        System.out.println("Math.random()*100----:"+Math.random()*100);//输出[0,100)间的随机数 32.783762836248144




// Math.rint 四舍五入 返回double值

        System.out.println("------------------------------------------");
        System.out.println("Math.rint(10.1)----:"+Math.rint(10.1));//10.0
        System.out.println("Math.rint(10.7)----:"+Math.rint(10.7));//11.0
        System.out.println("Math.rint(-10.5)----:"+Math.rint(-10.5));//-10.0
        System.out.println("Math.rint(-10.51)----:"+Math.rint(-10.51));//-11.0
        System.out.println("Math.rint(-10.2)----:"+Math.rint(-10.2));//-10.0
        System.out.println("Math.rint(9)----:"+Math.rint(9));//9.0



//Math.round 四舍五入 float时返回int值,double时返回long值

        System.out.println("------------------------------------------");
        System.out.println("Math.round(10.1)----:"+Math.round(10.1));//10
        System.out.println("Math.round(10.7)----:"+Math.round(10.7));//11
        System.out.println("Math.round(-10.5)----:"+Math.round(-10.5));//-10
        System.out.println("Math.round(-10.51)----:"+Math.round(-10.51));//-11
        System.out.println("Math.round(-10.2)----:"+Math.round(-10.2));//-10
        System.out.println("Math.round(9)----:"+Math.round(9));//9



//Math.nextUp(a) 返回比a大一点点的浮点数

        System.out.println("------------------------------------------");
        System.out.println("Math.nextUp(1.2)----:"+Math.nextUp(1.2));//1.2000000000000002

//Math.nextDown(a) 返回比a小一点点的浮点数

        System.out.println("------------------------------------------");
        System.out.println("Math.nextDown(1.2)----:"+Math.nextDown(1.2));//1.1999999999999997



//Math.nextAfter(a,b) 返回(a,b)或(b,a)间与a相邻的浮点数 b可以比a小

        System.out.println("------------------------------------------");
        System.out.println("Math.nextAfter(1.2, 2.7)----:"+Math.nextAfter(1.2, 2.7));//1.2000000000000002
        System.out.println("Math.nextAfter(1.2, -1)----:"+Math.nextAfter(1.2, -1));//1.1999999999999997

    }

}

三、System类

1、概念

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。

该类位于lang包下,不需要导包;构造方法私有private,无法实例化;内部成员static(静态),方便调用。

system中包含了in、out和err三个成员变量,分别代表标准输入流(键盘输入)、标准输出流(显示器)和标准错误输出流(显示器)。

2、常用方法

最常见的两种:

?<1>、exit

System.exit(0);

终止JVM,终止java虚拟机的运行。

<2>、currentTimeMillis

long l=System.currentTimeMillis() ;

返回当前毫秒值的时间,和Date类中的getTime方法一样。(嗯,日期类也是一个常用API)

<3>(补充)System.arraycopy(a,b,c,d,e)

a是被复制的数组,b是复制的起始位置,c是复制到的数组,d是复制到这个数组的起始位置,e是复制到这个数组的结束位置。

(懂了撒,学会这个,你就是ITcopy忍者卡卡西!!!)

<4>、(补充)getProperty

获取系统属性;

<5>、(补充)gc

java垃圾回收器,这个方法不需要我们去调用,jvm发现系统有未使用的对象,会自己进行执行。通常会有两种情况下会调用gc:(a)、当jvm内存不足时会调用,(b)、当cpu空闲的时候调用。详细请看一下jvm的具体的垃圾回收机制。

3、代码演示(只演示常用的两种方法)

<1>、System.currentTimeMillis的方法(用来测试自己电脑运行能力还是可以的)

public class timeTest {
    public static void main(String[] args) {
        long startTime=System.currentTimeMillis();

        for (int i = 0; i < 10000; i++) {
            System.out.println(i);
        }

        long endTime=System.currentTimeMillis();

        System.out.println(endTime-startTime);
    }


}

结果:可以看出咱电脑跑分还是可以的。

......
9995
9996
9997
9998
9999
90

Process finished with exit code 0

<2>、System.exit的方法(为了简便明了,我就用上述的时间毫秒值代码测试,终止循环,大家注意看,嗯,不是 为了偷懒!!)

public class timeTest {
    public static void main(String[] args) {
        long startTime=System.currentTimeMillis();

        for (int i = 0; i < 10000; i++) {
            System.out.println(i);
            System.exit(0);//这行代码,神奇的终止的循环的继续,就输出了一个0
        }

        long endTime=System.currentTimeMillis();

        System.out.println(endTime-startTime);
    }


}

结果展示:

0

Process finished with exit code 0

这两种方法,可以经常用到,需要大家认真记忆学习。

四、Arrays——数组类

1、概念

JDK中提供了一个专门用于操作数组的工具类,即Arrays类,位于java util 中。

2、方法

<1>、Arrays.fill(填充数组)

fill方法填充数组的方式有两种,一种是:

(1)完全填充:

import java.lang.reflect.Array;
import java.util.Arrays;

public class Demo {
    public static void main(String[] args) {
    //定义一个int数组
    int[] arr=new int[5];

        //然后我们调用Arrays的fill方法(变量名,数值)
        Arrays.fill(arr,2);

        //当我们遍历输出时,我们就会发现数组中每一个索引对应的值都是我们方法中设置的2
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

    }

}
2
2
2
2
2

Process finished with exit code 0

?(2)部分填充:

import java.lang.reflect.Array;
import java.util.Arrays;

public class Demo {
    public static void main(String[] args) {
    //同样是一个数组
    int[] arr=new int[5];
        //但此时我们方法内放得值改变了,成为fill(变量名,索引开始值,索引结束值,数据值)
        Arrays.fill(arr,1,3,2);
        //当我们输出时,我们就会发现,索引值1与2对应的数值变为了2,而不是全部(我们能发现,这里的方法有些与String中的subString方法类似)
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

    }

}

0
2
2
0
0

Process finished with exit code 0

<2>、数组元素排序:sort

sort方法也是数组中,极为常用的一个排序方法。也分为整体排序与局部排序的区别,也是加索引的区别,这里我就不再演示部分排序的代码了。

int []arr = {3,2,1,5,4};
Arrays.sort(arr);
output(arr);

?输出的结果就是1,2,3,4,5

<3>、equals(比较数组元素是否相等)

我们如果学过Object类中的equals的方法,我们就知道这是个比较两个引用对象是否相同的方法。但Arrays.equals重写的equals方法,却可以比较数组中的元素是否相等。

上代码:

import java.util.Arrays;

public class Demo {
    public static void main(String[] args) {
        int []arr1 = {1,2,3};
        int []arr2 = {1,2,3};
        System.out.println(Arrays.equals(arr1,arr2));

    }

}

结果输出true,而如果我们在输出语句中写的是arr1.equals(arr2),返回的结果就会变成false。

<4>、binarySearch (二分查找法找指定元素的索引值(下标))

<5>、copy(截取数组元素)

......

方法还有很多,大家想再扩充自己知识的,欢迎大家努力学习!!

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-30 12:11:23  更:2021-09-30 12:11:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:42:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码