• Arrays类中常用的方法


    目录

    1.在使用之前导入Arrays包

    2.Arrays.toString()方法

     3.Arrays.sort()方法

    3.1Arrays.sort(数组名称)

    3.2Arrays.sort(数组名,起始下标,排序个数)

    4.Arrays.equals()方法

    5.Arrays.binarySearch()

    6.Arrays.copyOf()

    补充

    1.在使用之前导入Arrays包

    import java.util.Arrays;

    2.Arrays.toString()方法

    以字符串的形式快速输出数组的内容

    1. package day8_2;
    2. import java.util.Arrays;
    3. public class ArraysTest {
    4. public static void main(String[] args) {
    5. int arr [] = {1, 2, 3, 4, 5};
    6. System.out.println(Arrays.toString(arr));
    7. }
    8. }
    9. //[1, 2, 3, 4, 5]

     3.Arrays.sort()方法

    3.1Arrays.sort(数组名称)

        给对应的数组进行排序 (默认升序)

    1. package day8_2;
    2. import java.util.Arrays;
    3. public class ArraysTest {
    4. public static void main(String[] args) {
    5. int arr [] = {5, 8, 1, 6, 9};
    6. Arrays.sort(arr);
    7. System.out.println(Arrays.toString(arr));
    8. }
    9. }
    10. //[1, 5, 6, 8, 9]

    3.2Arrays.sort(数组名,起始下标,排序个数)

    对传入的数组进行对应的下标起始位置,以及排序个数进行排序

    1. package day8_2;
    2. import java.util.Arrays;
    3. public class ArraysTest {
    4. public static void main(String[] args) {
    5. int arr [] = {5, 8, 1, 6, 9};
    6. Arrays.sort(arr,0,3);
    7. System.out.println(Arrays.toString(arr));
    8. }
    9. }
    10. //[1, 5, 8, 6, 9]

    4.Arrays.equals()方法

    注意:官方在Arrays类中,已经重写了equals()方法。此时比较的是两个数组的内容是否相同,而并不是地址是否相同!

    以下为官方重写的equals方法:

    1. public static boolean equals(int[] a, int[] a2) {
    2. if (a==a2)
    3. return true;
    4. if (a==null || a2==null)
    5. return false;
    6. int length = a.length;
    7. if (a2.length != length)
    8. return false;
    9. for (int i=0; i
    10. if (a[i] != a2[i])
    11. return false;
    12. return true;
    13. }
    14. //false
    1. package day8_2;
    2. import java.util.Arrays;
    3. public class ArraysTest {
    4. public static void main(String[] args) {
    5. int arr [] = {5, 8, 1, 6, 9};
    6. int arr1 [] = {5, 8, 1, 6};
    7. System.out.println(Arrays.equals(arr,arr1));
    8. }
    9. }
    10. //false

    5.Arrays.binarySearch()

    方法作用:在数组中查找元素  (返回值大于等于零则认为数组中有该元素

    int Arrays.binarySearch( Datatype[], Datatype key)

    在数组中查找指定值,若找到,则返回此值的下标,若没找到,返回 -插入点-1;

    1. package day8_2;
    2. import java.util.Arrays;
    3. public class ArraysTest {
    4. public static void main(String[] args) {
    5. int arr [] = {5, 8, 1, 6, 9};
    6. System.out.println(Arrays.binarySearch(arr,9));
    7. System.out.println(Arrays.binarySearch(arr,10));
    8. }
    9. }
    10. /*
    11. 4
    12. -6
    13. */

    6.Arrays.copyOf()

    方法作用:拷贝数组

    第一个参数是原数组,第二个参数是拷贝长度,返回值是将原数组拷贝一份返回

    (它的底层其实是调用了System.arrayCopy()方法)

    1. public static int[] copyOf(int[] original, int newLength) {
    2. int[] copy = new int[newLength];
    3. System.arraycopy(original, 0, copy, 0,
    4. Math.min(original.length, newLength));
    5. return copy;
    6. }
    1. package day8_2;
    2. import java.util.Arrays;
    3. public class ArraysTest {
    4. public static void main(String[] args) {
    5. int arr [] = {5, 8, 1, 6, 9};
    6. int arr1 [] = Arrays.copyOf(arr,3);
    7. int arr2 [] = Arrays.copyOf(arr,5);
    8. int arr3 [] = Arrays.copyOf(arr,6);
    9. System.out.println(Arrays.toString(arr1));
    10. System.out.println(Arrays.toString(arr2));
    11. System.out.println(Arrays.toString(arr3));
    12. }
    13. }
    14. /*
    15. [5, 8, 1]
    16. [5, 8, 1, 6, 9]
    17. [5, 8, 1, 6, 9, 0]
    18. */

     注意:如果拷贝长度超出原来数组的长度,则多出的部分使用0填充!!!

    补充

    问:为什么 Arrays.equals(a,b) 和 a.equals(b) 不同呢

    答:数组是Object的子类,a.equals(b) 使用的是 Object 类的 equals 方法,是比较地址值的

    而 Arrays 的equals()方法与Object的不同,它进行数组内容的比较

    1. package day8_2;
    2. import java.util.Arrays;
    3. public class ArraysTest {
    4. public static void main(String[] args) {
    5. int arr [] = {5, 8, 1, 6, 9};
    6. int arr1 [] = {5, 8, 1, 6, 9};
    7. System.out.println(Arrays.equals(arr,arr1));
    8. System.out.println(arr.equals(arr1));
    9. }
    10. }
    11. /*
    12. true
    13. false
    14. */

     

  • 相关阅读:
    使用Enterprise Architect(EA)的插件AtScope,解析代码中函数和变量调用关系
    【Visual Leak Detector】核心源码剖析(VLD 1.0)
    共享模型之管程
    如何开启企业数字化转型
    Lua函数
    一站式解决方案:Qt 跨平台开发灵活可靠
    QT配置FFmpeg出现错误原因
    vue3+ts+uniapp实现小程序端input获取焦点计算上推页面距离
    【一起玩蛇】Python 结构化数据分析工具 Pandas | Series 与 DataFrame | 读取CSV文件数据 |
    运营商光纤资源管理:管理工具的力量
  • 原文地址:https://blog.csdn.net/qq_58029155/article/details/126146815