14--常用类和基础API--04

发布时间:2023年12月17日

1、Arrays类

1.1 Arrays类概述

java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来非常简单。简单来说:Arrays这个是专门用来操作数组相关的工具类

1.2 Arrays类常用方法

public static int[] copyOf(int[] original, int newLength)

????????复制指定的数组,用零截取或填充(如有必要),以便复制具有指定的长度。

public static int[] copyOfRange(int[] original, int from, int to)

????????将指定数组的指定范围复制到新数组中。

public static void sort(int[] a) ????????????????底层使用快速排序

????????按照数字顺序升序排列指定的数组。

public static void sort(int[] a, int fromIndex, int toIndex)

????????按升序排列数组的指定范围。

public static boolean equals(int[] a, int[] a2)

????????如果两个指定的int数组彼此 相等 ,则返回 true 。

public static int binarySearch(int[] a, int key) ???????????????使用前先排序,底层使用二分查找

????????使用二叉搜索算法搜索指定的int数组的指定值。

public static void fill(int[] a, int val)

????????将指定的int值分配给指定的int数组的每个元素。

public static String toString(int[] a)

????????返回指定数组的内容的字符串表示形式

package com.suyv.arrays;

import org.junit.Test;

import java.util.Arrays;

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-13 14:49
*@Description: TODO
*/
public class ArrayDemo01 {
    
    int[] a = {1,15,95,23,36,42};
    int[] a1 = {1,15,95,23,36,42};


    @Test
    public void Test01(){
        // copyOf(int[] original, int newLength)
        // 复制指定的数组,用零截取或填充(如有必要),以便复制具有指定的长度。
        int[] arr = Arrays.copyOf(a,10);
        System.out.println(Arrays.toString(arr));   // [1, 15, 95, 23, 36, 42, 0, 0, 0, 0]

        // copyOfRange(int[] original, int from, int to)
        // 将指定数组的指定范围复制到新数组中。
        int[] arr1 = Arrays.copyOfRange(a,0,3);
        System.out.println(Arrays.toString(arr1));  // [1, 15, 95]

        int[] arr2 = Arrays.copyOfRange(a,4,8);
        System.out.println(Arrays.toString(arr2));  // [36, 42, 0, 0]
    }

    @Test
    public void Test02(){
        // sort(int[] a)
        // 按照数字顺序升序排列指定的数组。
        Arrays.sort(a);
        System.out.println(Arrays.toString(a)); // [1, 15, 23, 36, 42, 95]

        // sort(int[] a, int fromIndex, int toIndex)
        // 按升序排列数组的指定范围。
        Arrays.sort(a1,0,4);
        System.out.println(Arrays.toString(a1));    // [1, 15, 23, 95, 36, 42]
    }
    
    @Test
    public void Test03(){
        // equals(int[] a, int[] a2)
        // 如果两个指定的int数组彼此 相等 ,则返回 true 。
        int[] a2 = {1,15,95,23,36,42};
        System.out.println(Arrays.equals(a1,a2));   // true

        int[] a3 = {1,95,15,23,36,42};
        System.out.println(Arrays.equals(a1,a3));   // false
    }
    
    @Test
    public void Test04(){
        // binarySearch(int[] a, int key)
        // 使用二叉搜索算法搜索指定的int数组的指定值。
        // 使用二分查找时先进行排序
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));     // [1, 15, 23, 36, 42, 95]
        // 返回值大于等于0表示查询到该元素
        System.out.println(Arrays.binarySearch(a,95));      // 5
        // 返回值小于0表示插入点,即如果把该元素插入到该数组中,他的位置是多少
        // 即把返回值取绝对值后-1的值为插入该数组的索引值
        System.out.println(Arrays.binarySearch(a,20));      // -3
        System.out.println(Arrays.binarySearch(a,0));       // -1
    }
    
    @Test
    public void Test05(){
        // fill(int[] a, int val)
        // 将指定的int值分配给指定的int数组的每个元素。
        int[] arr = new int[10];
        Arrays.fill(arr,5);
        System.out.println(Arrays.toString(arr));   // [5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
    }
}

2、Math类

2.1 Math类概述

java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。

2.2 Math类常用方法

方法名

说明

Math.PI

常量,圆周率

public static double abs(double num)

取绝对值

public static double ceil(double num)

向上取整

public static double floor(double num)

向下取整

public static long round(double num)

四舍五入

public static int max(int a, int b)

求最大值

public static int min(int a, int b)

求最小值

public static double pow(double a, double b)

求a的b次幂

public static double random()

随机数,随机的范围[0,1)

package com.suyv.math;

import org.junit.Test;

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-13 16:22
*@Description: TODO
*/
public class MathDemo {
    double d1 = 25.1;
    double d2 = 25.5;
    double d3 = 25.9;

    @Test
    public void Test00(){
        System.out.println(Math.PI);    // 3.141592653589793
        System.out.println(Math.E);     // 2.718281828459045
    }

    @Test
    public void Test01(){
        // Math.ceil(double d)
        // 向上取整
        System.out.println(Math.ceil(d1));  // 26.0
        System.out.println(Math.ceil(d2));  // 26.0
        System.out.println(Math.ceil(d3));  // 26.0
    }

    @Test
    public void Test02(){
        // Math.floor(double d)
        // 向下取整
        System.out.println(Math.floor(d1)); // 25.0
        System.out.println(Math.floor(d2)); // 25.0
        System.out.println(Math.floor(d3)); // 25.0
    }

    @Test
    public void Test03(){
        // Math.round(double d)
        // 四舍五入
        System.out.println(Math.round(d1)); // 25
        System.out.println(Math.round(d2)); // 26
        System.out.println(Math.round(d3)); // 26
    }

    @Test
    public void Test04(){
        // Math.random()
        // 取[0.0,1.0)的随机数
        System.out.println(Math.random());
        // 取[0,100]的随机数
        int a = (int) Math.round(Math.random() * 100);
        System.out.println(a);
    }

    @Test
    public void Test05(){
        // Math.pow(double x, double y)
        // 取x的y次幂
        System.out.println(Math.pow(2, 2)); // 4.0
        System.out.println(Math.pow(2, 3)); // 8.0
    }

    @Test
    public void Test06(){
        // Math.sqrt(double d)
        // 取算术平方根
        System.out.println(Math.sqrt(9));   // 3.0
        System.out.println(Math.sqrt(4));   // 2.0
    }

    @Test
    public void Test07(){
        // Math.max(doubel d1,double d2)
        // 取较大值
        System.out.println(Math.max(d1, d2));   // 25.5
    }

    @Test
    public void Test08(){
        // Math.min(doubel d1,double d2)
        // 取较小值
        System.out.println(Math.min(d1, d2));   // 25.1
    }

}

3、System类

3.1 System类概述

java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。

3.2 System类常用方法

public static longcurrentTimeMillis()

????????返回距离1970年1月1日0点0分0秒的毫秒数,时间戳

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

????????复制数组

????????第一个参数是要复制的数组,第二个参数是从该数组那个索引开始复制,

????????第三个参数是复制到那个数组,第四个参数是复制到该数组的那个索引,

????????第五个参数是复制多少长度的第一个数组

public static void gc()

????????运行垃圾回收器

public static void exit(int status)

????????终止当前运行的Java虚拟机

package com.suyv.system;

import org.junit.Test;

import java.util.Arrays;
import java.util.Scanner;

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-13 21:55
*@Description: TODO
*/
public class SystemDemo {

    @Test
    public void Test01(){
        // 测试System类中的属性
        // “标准”输入流。
        Scanner scan = new Scanner(System.in);
        // “标准”输出流。
        System.out.println("Hello");    // Hello
        // “标准”错误输出流。
        System.err.println("Hello");    // Hello
    }

    @Test
    public void Test02(){
        // currentTimeMillis()方法
        // 时间戳
        // 常用来测试程序运行的时间
        System.out.println(System.currentTimeMillis()); // 1702476218177
    }

    @Test
    public void Test03(){
        // arraycopy()方法
        // 第一个参数是要复制的数组,第二个参数是从该数组那个索引开始复制,
        // 第三个参数是复制到那个数组,第四个参数是复制到该数组的那个索引,第五个参数是复制多少长度的第一个数组
        int[] arr = {11,22,33};
        int[] arr1 = new int[10];
        System.arraycopy(arr,1,arr1,2,1);
        System.out.println(Arrays.toString(arr1));      // [0, 0, 22, 0, 0, 0, 0, 0, 0, 0]
    }

    @Test
    public void Test04(){
        // 调用垃圾回收器
        System.gc();
        // 正常终止当前运行的Java虚拟机
        System.exit(0);
    }

}

文章来源:https://blog.csdn.net/weixin_46612641/article/details/134983517
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。