【Java】浅谈Java数组的定义与使用(三)

简介: 前言本篇博客主要讲述了以下几点问题1. 理解数组基本概念2. 掌握数组的基本用法3. 数组与方法互操作4. 熟练掌握数组相关的常见问题和代码~

🎄数组练习

🎅二分查找

public class 二分查找 {
    public static int binarySearch(int []arr, int target) {
        int left = 0;
        int right = arr.length-1;
        while (left <= right) {
            int mid=(left+right)/2;
            if (arr[mid]<target){
                left = mid+1;
            }
            else if (arr[mid]>target){
                right = mid-1;
            }
            else
                return mid+1;
        }
        System.out.println("没有这个数");
        return -1;
    }
    public static void main(String[] args) {
        int target = 8;
        int arr[] = {1,2,3,4,5,6,7,8};
        System.out.println("要查找的数是第"+binarySearch(arr,target)+"个");
    }
}

🎅冒泡排序

import java.util.Arrays;
public class 冒泡排序 {
    public static int[] bubble(int arr[]) {
        for (int i = 0; i < arr.length-1; i++){
            for (int j = 0; j < arr.length-1-i; j++){
                if (arr[j]>arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        return arr;
    }
    public static void main(String[] args) {
        int arr [] = {1,1,4,7,2,4,6,9,2,6,5};
        System.out.println(Arrays.toString(bubble(arr)));
    }
}

🎅判断数组是否有序

public class 判断数组是否有序 {
    public static boolean judgment(int arr[]) {
        for (int i = 0; (i+1)<arr.length; i++){
            if (arr[i]>arr[i+1])
                return false;
        }
        return true;
    }
    public static void main(String[] args) {
        int arr1[] = {1,2,3,4};
        int arr2[] = {2,1,4,3};
        if (judgment(arr1))
            System.out.println("arr1"+"有序");
        else
            System.out.println("arr1"+"无序");
        if (judgment(arr2))
            System.out.println("arr2"+"有序");
        else
            System.out.println("arr2"+"无序");
    }
}

🎅只出现一次的元素

public class 只出现一次的数字 {
    public static int Only(int arr[]) {
         int tmp = 0;
         for (int i = 0; i < arr.length; i++) {
             /*
                涉及到异或运算,对于这道题,你应该了解异或有什么样性质
                1. 任何数与0异或,都为原数
                2. 与本身自己异或,则为0
                3. 交换律和结合律(解决这道题的关键),你把整个循环的计算写成数学运算过程,你会发现要利用交换律和结合律,可以实现这道题的要求
                 */
             tmp ^= arr[i];
         }
         return tmp;
    }
    public static void main(String[] args) {
        int arr[] = {2,0,0,1,1,2,6};
        System.out.println(Only(arr));
    }
}

🎅改变原有数组的值

import java.util.*;
public class 改变原有数组元素的值 {
    public static int[] transform(int[]array2) {
        for (int i = 0; i < array2.length; i++) {
            array2[i] *=2;
        }
        return array2;
    }
    public static void main(String[] args) {
        int [] array1 = {1,2,3,};
        System.out.println(Arrays.toString(array1));
        System.out.println("×2改变之后数组="+ Arrays.toString(transform(array1)));
    }
}

🎅数组所以元素之和

public class 数组所有元素之和 {
    public static float sum(int[]array) {
        int sum = 0;
        for (int i = 0; i < array.length; i++)
            sum += array[i];
        return sum;
    }
    public static void main(String[] args) {
        int [] array = {1,2,3,};
        for (int i = 0; i < array.length; i++)
            System.out.print(array[i]+" ");
        System.out.println();
        System.out.println("所以元素之和="+sum(array));
    }
}

🎅 数组拷贝

import java.util.Arrays;
public class 数组的拷贝 {
    public static  int[] copyOf(int []arr1) {
        int []arr2;
        arr2 = new int[arr1.length];
        for (int i = 0; i < arr1.length; i++) {
            arr2[i] = arr1[i];
        }
        return arr2;
    }
    public static void main(String[] args) {
        int []arr1={1,2,3,4,5};
        System.out.println("arr1="+Arrays.toString(arr1));
        System.out.println("arr2="+Arrays.toString(copyOf(arr1)));
    }
}

🎅数组转字符串

public class 数组转字符串 {
    public static void printString(int[]arr) {
        String a ="[";
        for (int i = 0; i < arr.length; i++){
            a+=arr[i];
        if(i != arr.length -1)
            a += ",";
        }
        a+="]";
        System.out.println(a);
    }
    public static void main(String[] args) {
        int arr[] = {1,2,3,4,5};
        printString(arr);
    }
}

🎅求数组元素平均值

public class 求数组的平均值 {
    public static float avg(int[]array) {
        float avg;
        int sum = 0;
        for (int i = 0; i < array.length; i++) {
            sum += array[i];
        }
        avg = sum / array.length;
        return avg;
    }
    public static void main(String[] args) {
        int [] array = {1,2,3,};
        for (int i = 0; i < array.length; i++)
        System.out.print(array[i]+" ");
        System.out.println();
        System.out.println("平均数="+avg(array));
    }
}

🎄二维数组

二维数组本质上也就是一维数组, 只不过每个元素又是一个一维数组.

基本语法

数据类型[][] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 };

代码示例

二维数组的用法和一维数组并没有明显差别, 因此我们不再赘述.
不过要注意一个点,C里每行数组会跟列对齐,会自动补0,java里不会自动补,如下代码

import java.util.Arrays;
public class test {
   public static void main(String[] args) {
       int[][] arr;
       arr = new int[][]{ {1, 2, 3}, {5, 6, 7, 8}, {9, 10, 11, 12} };
       for (int row = 0; row < arr.length; row++) {
           for (int col = 0; col < arr[row].length; col++) {
               System.out.printf("%d\t", arr[row][col]);
           }
           System.out.println("");
       }// 执行结果
       // 1  2  3
       // 5  6  7  8
       // 9 10 11 12
   }
}


相关文章
|
2天前
|
存储 Java 索引
Java快速入门之数组、方法
### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。
|
3天前
|
存储 Java 索引
Java基础(六):数组
Java基础(六):数组
Java基础(六):数组
|
1天前
|
存储 Java C++
Java数组:静态初始化与动态初始化详解
本文介绍了Java中数组的定义、特点及初始化方式。
25 12
|
2月前
|
Java 编译器
Java重复定义变量详解
这段对话讨论了Java中变量作用域和重复定义的问题。学生提问为何不能重复定义变量导致编译错误,老师通过多个示例解释了编译器如何区分不同作用域内的变量,包括局部变量、成员变量和静态变量,并说明了使用`this`关键字和类名来区分变量的方法。最终,学生理解了编译器在逻辑层面检查变量定义的问题。
Java重复定义变量详解
|
3月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
42 4
|
3月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
52 2
|
2月前
|
Java
在Java中定义一个不做事且没有参数的构造方法的作用
Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用super()来调用父类中特定的构造方法,则编译时将发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。
|
3月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
115 2
|
3月前
|
Oracle Java 关系型数据库
重新定义 Java 对象相等性
本文探讨了Java中的对象相等性问题,包括自反性、对称性、传递性和一致性等原则,并通过LaptopCharger类的例子展示了引用相等与内容相等的区别。文章还介绍了如何通过重写`equals`方法和使用`Comparator`接口来实现更复杂的相等度量,以满足特定的业务需求。
39 3
|
3月前
|
存储 Java 编译器
Java集合定义其泛型
Java集合定义其泛型
29 1