首页 > 编程语言 > 详细

Java基本程序设计结构之数组

时间:2021-03-28 17:22:44      阅读:11      评论:0      收藏:0      [点我收藏+]

一、数组的定义

数组是一种数据结构,用来存储同一类型值且按照一定顺序排列的集合。

二、数组的声明

声明数组时,需要指出数组的数据类型,基本语法为:数据类型 [] 数组名称。例如:

//声明一个数组名为a的整型数组
int [] a;

但是,上面的定义仅仅是定义了一个数组,并没有真正初始化为一个整型数组。进行数组初始化时,使用关键字:new来完成。

//声明一个整型数组b并进行初始化,其中s为数组的长度
int [] b = new int [s];

特别注意:一旦创建了数组后,长度是无法改变的,若程序在运行的过程中需要经常扩展数组长度,应该使用另一种数据结构:数组列表(array list)。

几种声明常见形式

1. 声明初始化并设定长度

//声明一个整型数组c并进行初始化可以存储100个整数的数组
int [] c = new int [100];

2.创建数组对象并提供初始值

//创建数组d,并提供初始值:1、2、3、4、5
int [] d = {1,2,3,4,5};

值得注意的是:这种方式没有使用new关键字,也不用指定长度,最后的一个值允许有逗号,方便为数组添加值。

3.匿名数组

匿名数组的基本语法为:new 数据类型 [] {初始值}。例如:

//创建一个整型匿名数组且初始值为:a、b、c、d、e
new int []{a,b,c,d,e};

//进一步应用
ss = new int []{1,2,3,4};

//等同于
int [] xx = new int []{1,2,3,4};
ss = xx;

这样的方式,会分配一个新的数组并填入大括号里的值,能自动统计初始值的个数,并设置相应数组的大小。这样的方式能达到重新初始化一个数组无须再创建新的变量的效果。

三、数组的访问元素

访问的方式

1、普通的for循环访问

特别的,如果没有给创建的数组填入元素时,会使用初始默认值:整型数组为0,boolean数组为false,对象数组为null。

package chapter03;

/**
 * @ClassName ArrayTest01
 * @Description 普通的for循环进行元素的访问
 * @Date 2021/3/27 21:33
 * @Version 1.0
 **/
public class ArrayTest01 {
    public static void main(String[] args) {
        
        int [] aa = new int[10]; 
        //利用普通for循环往数组填入元素
        //i <10 也可以用aa.length代替
        for (int i = 0; i <10 ; i++) {
            aa[i]=i;  
        }
        //普通for循环往数组访问元素
         for (int i = 0; i <aa.length ; i++) {
            System.out.println(aa[i]);
        }
    }
}

效果图:

技术分享图片

2、增强for循环访问(for each)

基本语法为:for(数据类型 参数: 集合表达式) {}

值得注意的,增强for循环里,集合表达式中必须是一个数组或者是实现了Iterable接口的类对象如(ArrayList),语句中循环变量将会遍历数组中的每个元素,而不是下标值。增强for循环相对于普通的for循环的优点在于:更加简洁、不易出错,不必为下标的起始位置和终止位置而考虑。

package chapter03;

/**
 * @ClassName ArrayTest02
 * @Description 增强for循环进行元素的访问
 * @Date 2021/3/27 21:36
 * @Version 1.0
 **/
public class ArrayTest02 {
    public static void main(String[] args) {
        //定义一个名为aa的数组
        int [] aa = new int[10];
        //利用普通for循环往数组填入元素
        for (int i = 0; i <aa.length ; i++) {
            aa[i]=i;
        }

        //增强for循环来访问元素值
        for (int ss: aa) {
            System.out.println(ss);
        }
    }
}

效果图:
技术分享图片

对于两者的选择上,需要处理集合中的所有元素不考虑下标时,优先选择增强for循环;如果不希望遍历整个数组或者是在循环内部需要下标值时,仍然使用传统的for循环。

四、数组的拷贝

在Java中,允许将一个数组变量拷贝到另一个数组变量。这个时候,两个变量将引用同一个数组:

package chapter03;

/**
 * @ClassName ArrayCopyTest
 * @Description 数组拷贝
 * @Date 2021/3/27 22:52
 * @Version 1.0
 **/
public class ArrayCopyTest {
    public static void main(String[] args) {
        int [] aa = {1,2,3,4,5};
        
        //把aa数组拷贝到vv中
        int [] vv = aa;
        vv[4] = 10;

        int x = aa[4];
        int y = vv[4];

        System.out.println("aa[4]的值为:");
        System.out.println(x);
        System.out.println("----------");

        System.out.println("vv[4]的值为:");
        System.out.println(y);
        System.out.println("----------");

        System.out.println("aa数组的元素值为:");
        for (int xx: aa
             ) {
            System.out.println(xx);
        }
        System.out.println("----------");

        System.out.println("vv数组的元素值为:");
        for (int yy: vv
             ) {
            System.out.println(yy);
        }
    }
}

效果图:

技术分享图片

五、数组的排序

要想对数值型数组进行排序,可以使用Arrays类中的sort方法:

package chapter03;

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

/**
 * @ClassName ArrayAsortTest
 * @Description 抽彩游戏的随机组合
 * @Date 2021/3/27 23:48
 * @Version 1.0
 **/
public class ArrayAsortTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("您想输入多少个数字?");
        int k = sc.nextInt();

        System.out.println("输入最高的数字是多少?");
        int n = sc.nextInt();

        int []  number = new int[n];
        for (int i = 0; i < number.length ; i++) {
            number[i] = i + 1;
        }

        int [] result = new int[k];
        for (int i = 0; i < result.length; i++) {
            
            int r = (int)(Math.random()*n);
            result[i] = number[r];
            number[r] = number[n - 1];
            n--;

        }
		//数组的sort方式的调用
        Arrays.sort(result);
        System.out.println("最后的结果是:");
        for ( int r: result
             ) {
            System.out.println(r);
        }

    }
}

效果图:
技术分享图片

Java基本程序设计结构之数组

原文:https://www.cnblogs.com/lyj-tec-blog/p/14588247.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!