当前位置: 首页 > news >正文

从零开始学java--常用工具类介绍

目录

常用工具类介绍

数学工具类

数组工具类


常用工具类介绍

工具类就是专门为一些特定场景编写的,便于我们去使用的类。工具类一般都会内置大量的静态方法,我们可以通过类名直接使用。

数学工具类

java提供的运算符实际上只能进行一些在小学数学中出现的运算,但是如果我们想要进行乘方、三角函数之类的高级运算,就没有对应的运算符能够做到,而此时我们就可以使用数学工具类来完成。

    public static void main(String[] args) {
        Math.pow(2,3);  //2的三次方
        Math.abs(-1);  //求绝对值
        Math.max(11,13);  //最大值
        Math.sqrt(9);  //算术平方根
        
        Math.sin(Math.PI/2);  //求π/2的正弦值
        Math.asin(1);  //三角函数的反函数,这里是arcsin1的值
        Math.ceil(4.5);  //向上取整
        Math.floor(4.5);  //向下取整
    }

计算sinπ得到的1.2246467991473532E-16是精度导致的,这里的E是科学计数法的10,这个数是非常接近于0的。

快速计算对数:

    public static void main(String[] args) {
        System.out.println(Math.log(Math.E)); //以e为底的对数函数,其实就是ln,我们可以直接使用Math中定义好的e
        Math.log10(100);  // 10为底的对数函数
        //利用换底公式,可以有任何我们想求的对数函数
        double a=Math.log(4)/Math.log(2);  //这里是求以2为底4的对数,log(2)4=ln4/ln2
    }

 

随机数的生成:Random类

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random random=new Random(); //创建Random对象
        System.out.println(random.nextInt(100)); //nextInt方法可以创建指定0-x之内的随机数
    }
}


数组工具类

数组工具类Arrays

用于便捷操作数组,比如打印数组可以直接通过toString方法转换字符串:

    public static void main(String[] args) {
        int[] arr=new int[]{1,6,3,5,2,0};
        System.out.println(Arrays.toString(arr));
    }
//输出{1,6,3,5,2,0}

排序:

    public static void main(String[] args) {
        int[] arr=new int[]{1,6,3,5,2,0};
        Arrays.sort(arr); //将所有的元素从小到大顺序排放
        System.out.println(Arrays.toString(arr));
    }
//输出[0, 1, 2, 3, 5, 6]

快速进行填充:

    public static void main(String[] args) {
        int[] arr=new int[10];
        Arrays.fill(arr,66);
        System.out.println(Arrays.toString(arr));
    }
//输出[66, 66, 66, 66, 66, 66, 66, 66, 66, 66]

快速对一个数组进行拷贝:

    public static void main(String[] args) {
        int[] arr=new int[]{1,2,3,4,5};
        int[] target=Arrays.copyOf(arr,5);
        System.out.println(Arrays.toString(target)); //拷贝数组的全部内容,并生成一个新的数组对象
        System.out.println(arr==target);
    }
//输出[1, 2, 3, 4, 5]
false
        int[] arr=new int[]{1,2,3,4,5};
        int[] target=Arrays.copyOfRange(arr,3,5); //拷贝某个范围的内容,包前不包后
        System.out.println(Arrays.toString(target)); 
//输出[4, 5]

也可以将一个数组中的内容拷贝到其他数组中:

    public static void main(String[] args) {
        int[] arr=new int[]{1,2,3,4,5};
        int[] target=new int[10];
        System.arraycopy(arr,0,target,2,5);  //使用System.arraycopy进行搬运
        System.out.println(Arrays.toString(target));
    }
//输出[0, 0, 1, 2, 3, 4, 5, 0, 0, 0]

对一个有序的数组(从小到大排列)我们可以使用二分搜索快速找到对应元素在哪个位置:

    public static void main(String[] args) {
        int[] arr=new int[]{1,2,3,4,5};
        System.out.println(Arrays.binarySearch(arr,5));
    }
//输出4

多维数组:

因为现在数组里每个元素就是一个数组,所以说toString会出现些问题。Arrays也支持对多维数组进行处理。

deepToString方法对多维数组进行打印

同样的,因为数组本身没有重写equals方法,所以说无法判断两个不同的数组对象中每一个元素是否相同,Arrays也为一维数组和多维数组提供了相等判断的方法:

    public static void main(String[] args) {
        int[][] a=new int[][]{{2,1,3},{4,6,9}};
        int[][] b=new int[][]{{2,1,3},{4,6,9}};
        System.out.println(Arrays.equals(a,b));  //equals仅适用于一维数组
        System.out.println(Arrays.deepEquals(a,b));  //对于多维数组使用deepEquals进行深层次判断
    }
//输出false
true

http://www.dtcms.com/a/107650.html

相关文章:

  • obsidian ios git同步
  • 【企业文化】CXO是什么?
  • arcgis jsapi 4.31调用geoserver发布/{z}/{x}/{y}.png
  • python-leetcode 63.搜索二维矩阵
  • JavaScript中Symbol详解及使用场景
  • c++:封装哈希表实现unordered_map与unordered_set
  • [dp_1] 使用最小花费爬楼梯 | 解码方法 | 虚拟dp[0]=0
  • 【输入某年某日,判断这是这一年的第几天】
  • 中小企业商标管理新选择:启服云。
  • Conmon lisp Demo
  • 如何在服务器里备份文件或系统
  • 基于NebulaGraph构建省市区乡镇街道知识图谱(二)
  • Bugku-眼见非实
  • 5.模型训练-毕设篇
  • HTML5手写签名板项目实战教程
  • linux -- php 扩展之xlswriter
  • DAY46 动态规划Ⅸ 股票问题Ⅱ
  • 机构数据服务
  • 搜索工具Everything下载安装使用教程(附安装包)
  • 网络安全的挑战与防护策略
  • Excel时间类型函数(包括today、date、eomonth、year、month、day、weekday、weeknum、datedif)
  • 大模型-提示词(Prompt)最佳实践
  • 【零基础入门unity游戏开发——2D篇】SpriteEditor图片编辑器
  • Unity 渲染流水线
  • 什么是编译和反编译
  • 【Python】Python 环境 + Pycharm 编译器 官网免费下载安装(图文教程,新手安装,Windows 10 系统)
  • 智能矢量化(地质类栅格图像)
  • python实战案例:销售数据BI动态分析仪表板
  • 今日行情明日机会——20250402
  • 任务堆积导致 OOM(内存溢出)