JAVA数组

本文详细介绍了Java中的一维数组和二维数组的声明、创建、赋值与访问,包括初始化、遍历、排序、复制、查找和比较操作。此外,还展示了如何使用Arrays类进行数组操作,如排序、转换为字符串、填充特定值。文章通过实例代码加深了对数组概念和操作的理解。
摘要由CSDN通过智能技术生成

数组

一维数组

数组声明:数据类型[ ] 数组名
例:int[] name: 这里的int[] 是应用数据类型,[]表示该变量是一个数组,int 表示数组里的每一个元素都是一个整数。name:变量名

创建数组:数组名 = new 数据类型 [ 数组长度 ]; 数组长度可以为任意整数。
例:int [] a=new int[10]
a:表示引用;,指向数组

数组赋值与访问数组

int [] ages = {12,18,9,33,45,60}; 
ages[0]=12;

package first;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);
        int[] a=new int[]{1,2,3};

        int []b={1,2,3};

        //int[] a=new int[3]{1,2,3}; 如果指定了数组的内容,就不能同时设置数组的长度
        
    }
}

数组元素(例如上面的12)既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量)
访问:访问数组通过他的下标来访问,其中的某个数字代表具体的值。

实例1:求最小值

package first;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);
        int[] a = new int[5];
        for (int j=0;j<5;j++){
            a[j]=(int)(Math.random()*100);
            //System.out.print(a[j]+" ");
        }
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
            int min = a[0];
            for (int i = 0; i < a.length; i++) {

                if (a[i] < min) {
                    min = a[i];
                } else {
                    continue;
                }

            }
        System.out.println("最小值为:"+ min);

    }
}

选择排序法

public class HelloWorld {
    public static void main(String[] args) {
        int a [] = new int[]{18,62,68,82,65,9};
        //排序前,先把内容打印出来
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");
        //选择法排序
     
        //第一步: 把第一位和其他所有位进行比较
        //如果发现其他位置的数据比第一位小,就进行交换
         
        for (int i = 1; i < a.length; i++) {
            if(a[i]<a[0]){  
                int temp = a[0];
                a[0] = a[i];
                a[i] = temp;
            }
        }
        //把内容打印出来
        //可以发现,最小的一个数,到了最前面
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");
         
        //第二步: 把第二位的和剩下的所有位进行比较
        for (int i = 2; i < a.length; i++) {
            if(a[i]<a[1]){  
                int temp = a[1];
                a[1] = a[i];
                a[i] = temp;
            }
        }
        //把内容打印出来
        //可以发现,倒数第二小的数,到了第二个位置
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");       
         
        //可以发现一个规律
        //移动的位置是从0 逐渐增加的
        //所以可以在外面套一层循环
         
        for (int j = 0; j < a.length-1; j++) {
            for (int i = j+1; i < a.length; i++) {
                if(a[i]<a[j]){  
                    int temp = a[j];
                    a[j] = a[i];
                    a[i] = temp;
                }
            }
        }
         
        //把内容打印出来
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");       
    }
}

增强for循环

package first;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);
        int each[] = new int[]{18, 62, 68, 82, 65, 9};
        for (int i = 0; i < each.length; i++) {
            System.out.print(each[i] + " ");
        }

        for(int values:each){   //values 为变量,each为应用
            System.out.println(values);
        }
    }
}

数组copy

package first;
import java.lang.*;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);
        int a[] = new int[]{18, 62, 68};
        int b[] =new int[3];
        for (int i=0;i<a.length;i++){
            b[i]=a[i];
            System.out.println(b[i]);
        }

        //src: 源数组
        //srcPos: 从源数组复制数据的起始位置
        //dest: 目标数组
        //destPos: 复制到目标数组的启始位置
        //length: 复制的长度       
        System.arraycopy(a, 1, b, 1, 2);
        for(int i=0;i<a.length;i++){
            System.out.println(b[i]);
        }
    }
}

二维数组

这是一个一维数组, 里面的每一个元素,都是一个基本类型int

int a[] =new int[]{1,2,3,4,5};

这是一个二维数组,里面的每一个元素,都是一个一维数组
所以二维数组又叫数组的数组

package first;
import java.lang.*;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);

        //初始化二维数组,
        int a[][] = new int[2][3]; //有两一维数组,每个一维数组的长度是3
        int b[][] = new int[][]{{1, 2, 3}, {2, 2, 2}};
        System.out.println(b[0][2]);//数组从0开始,输出3
        a[1][2] = 2;  //可以直接访问一维数组,因为已经分配了空间

        int[][] c = new int[2][]; //有两个一维数组,每个一维数组的长度暂未分配
        c[0]  =new int[3]; //必须事先分配长度,才可以访问
        c[0][2] = 5;
    }
}

数组使用:Arrays

数组复制

与使用System.arraycopy进行数组复制类似的, Arrays提供了一个copyOfRange方法进行数组复制。
不同的是System.arraycopy,需要事先准备好目标数组,并分配长度。 copyOfRange 只需要源数组就就可以了,通过返回值,就能够得到目标数组了。
除此之外,需要注意的是 copyOfRange 的第3个参数,表示源数组的结束位置,是取不到的。

package first;
import kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass;
import java.lang.*;
import java.util.Arrays;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);
        int[] a=new int[3];
        int b []={1,2,3};

        int [] c= Arrays.copyOfRange(b,0,3);
        for(int i=0;i<c.length;i++){
            System.out.println(c[i]);
        }

    }
}

转换为字符串

package first;
import kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass;

import java.lang.*;
import java.util.Arrays;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);
        int[] a=new int[3];
        int b []={1,2,3};
        
        String content=Arrays.toString(b);
        for(int i=0;i<b.length;i++){
            System.out.println(content);
        }

    }
}

排序

package first;
import java.lang.*;
import java.util.Arrays;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);
        int[] a=new int[3];
        int b []={4,2,3};

        System.out.println("排序之前");
        System.out.println(Arrays.toString(b));

        System.out.println("排序之后");
        Arrays.sort(b);
        System.out.println(Arrays.toString(b));

        for(int i=0;i<b.length;i++){
            //System.out.println(content);
        }

    }
}

搜寻

package first;
import java.lang.*;
import java.util.Arrays;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);
        int[] a=new int[]{4,2,3;
        int b []={4,2,3};
        

        Arrays.sort(b);
        System.out.println(Arrays.toString(b));
        //使用binarySearch之前,必须先使用sort进行排序
        System.out.println("数字3出现的位置"+Arrays.binarySearch(b,3));

    }
}

判断是否想等

package first;
import java.lang.*;
import java.util.Arrays;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);
        int[] a=new int[]{4,2,3};
        int b []={4,2,3};
        System.out.println(Arrays.equals(a,b));

    }
}

填充

package first;
import java.lang.*;
import java.util.Arrays;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);
        int[] a=new int[10];
        int b []={4,2,3};
        Arrays.fill(a,6);
        System.out.println(Arrays.toString(a));

    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值