Java——数组

Java——数组

认识数组

数组:是具有相同数据类型且按一定次序排列的一组变量的集合体。

数组元素:构成数组的每一个数据

数组下标:下标就是数组元素在数组中的位置。下标从0开始,依次累加1,也称为索引;

数组大小:数组中元素的个数,也称为数组的长度。

定义数组

Java中定义数组有两种语法格式:

数据类型 数组名[ ]; 或 数据类型[ ] 数组名;

int[] scores;
//或者
int scores[];

例如: String names[] 或 String[] names 推荐第二种方式

静态初始化数组

数据类型[] 变量名 = new 数据类型[]{元素1,元素2,元素3};
简化为:
数据类型[] 变量名 = {元素1,元素2,元素3};
String[] names = {"赵三", "李四", "王五"...};
System.out.println(names[1]);

注意:数组变量名中储存的是数组在内存中的地址,数组是一种引用类型。

动态初始化数组

为数组元素分配空间的语法格式:

数组名 = new 数据类型[数组长度];

scores = new int[5];

//定义数组和为数组分配内存,这两步可以合并在一起写。
int[] scores = new int[5];

数组在计算机中的基本原理:

int[] ages = {12,24,36}

首先,左边 int[] ages 表示定义了一个数组类型的变量,变量名叫ages

其次,右边 {12,24,36} 表示创建一个数组对象,你完全可以把它理解成一个能装数据的东西。这个对象在内存中会有一个地址值[I@4c873330 ,每次创建一个数组对象都会有不用的地址值。

然后,把右边的地址值 [I@4c873330 赋值给左边的ages变量

所以,ages变量就可以通过地址值,找到数组这个东西。

数组的元素访问

// 数组名可以找到数组对象的地址,再通过索引就可以定位到具体的元素了
数组名[索引]   // 范围是[0,10)
    
int[] arr = {12, 24, 36}; // 静态初始化
// 1、访问数组的全部数据
System.out.println(arr[0]); // 12
System.out.println(arr[1]); // 24
System.out.println(arr[2]); // 36

// 2、修改数组中的数据
arr[0] = 66;
arr[2] = 100;
System.out.println(arr[0]); //66
System.out.println(arr[1]); 
System.out.println(arr[2]); //100

数组的遍历

int[] ages = {12, 24, 36};
for (int i = 0; i < ages.length; i++) {
	// i的取值 = 0, 1, 2
	System.out.println(ages[i]);
}

使用增强for循环遍历数组

JDK1.5及其之后的版本中提供了增强for循环语句,实现了Iterable接口的类都可以使用增强for循环进行元素的迭代。增强for循环的语法规则如下:

for (元素类型 变量名 : 要迭代的对象) {
	System.out.println(变量名);
}
int[] arr = {15, 9000, 10000, 20000, 9500, -5};
for (int e : arr) {
	System.out.printn(e);
}
for (int i = 0; i < arr.length; i ++) {
	System.out.printn(arr[i]);
}
for (;;) {
}

案例

案例1

使用数组实现斐波拉切数列


import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //输出斐波拉切数列;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int n = sc.nextInt();
        int[] feibo = new int[n];
        if (n==1){
            feibo[0] = 1;
        } else if (n==2) {
            feibo[0] = 1;
            feibo[1] = 1;
        }else {
            feibo[0] = 1;
            feibo[1] = 1;
            for (int i =3;i<=n;i++){
                feibo[i-1]=feibo[i-3]+feibo[i-2];
            }
        }
        for (int i = 1;i<= feibo.length;i++){
            System.out.println("第"+i+"个数字是"+feibo[i-1]);
        }

    }
}

案例二

某歌唱比赛,需要开发一个系统:可以录入6名评委的打分,录入完毕后立即输出平均分做选手得分


import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        // 某歌唱比赛,需要开发一个系统:可以录入6名评委的打分,录入完毕后立即输出平均分做选手得分
        Scanner sc = new Scanner(System.in);
        double[] scores = new double[6];
        double sum = 0;
        double avg = 0;
        for(int i=1;i<=6;i++){
            System.out.println("第"+i+"个评委打分:");
            double score = sc.nextDouble();
            scores[i-1]=score;
        }
        for (int i = 0;i<scores.length;i++){
            sum += scores[i];
        }
        avg = sum / scores.length;
        System.out.println("该选手的得分是:"+avg);
    }
}

案例三

创建长度为10的int型数组,初始值为1、2、3、4、5、6、7、 8、9、10,按照下列规则更新数组中每一个元素的值:
a)数组的第n位元素 =数组的第n-1位元素*数组的第n位元素 * 数组的第n+1位元素
b)如果n = o,则数组的第n-1位元素的值按1计算。
c)如果n = 9,则数组的第n+1位元素的值按1计算。
更新后输出数组元素值应为:2,6,24,60,120,210, 336,504,720,90

public class Demo03 {
    public static void main(String[] args) {
        //创建长度为10的int型数组,初始值为1、2、3、4、5、6、7、 8、9、10,按照下列规则更新数组中每一个元素的值:
        // a)数组的第n位元素 =数组的第n-1位元素*数组的第n位元素 * 数组的第n+1位元素
        // b)如果n = o,则数组的第n-1位元素的值按1计算。
        // c)如果n = 9,则数组的第n+1位元素的值按1计算。
        //更新后输出数组元素值应为:2,6,24,60,120,210, 336,504,720,90
        int[] array = {1,2,3,4,5,6,7,8,9,10};
        int[] array1=new int[10];
        for (int i = 0;i<array.length;i++){
            if (i == 0){
                array1[i]=1*array[i]*array[i+1];
            }else if (i==9){
                array1[i]=array[i-1]*array[i]*1;
            }else {
                array1[i]=array[i-1]*array[i]*array[i+1];
            }
            System.out.println(array1[i]);
        }
    }
}

案例四

求最小值

public class Test01 {
    public static void main(String[] args) {
        // 定义一个含有五个元素的数组,并为每个元素赋值,求数组中所有元素的最小值
        //1.定义5个元素数组
        //2.可以使用初始化数组的两种方式之一为数组元素赋值
        //3.遍历数组求数组中的最小值
        int[] arr = {14,23,13,43,24};
        int min = 14;
        for(int i=1;i<arr.length;i++){
            if (arr[i]<min) {
                min = arr[i];
            }
        }
        System.out.println(min);

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值