数组-07

一、数组

1.1 数组定义

数组——就是一种可以存放一组相同类型数据的数据类型

  • 可以存放一组数据
  • 存储的这一组数据类型必须相同
1.2 数据的声明及创建
1.2.1数据的声明

在栈区分配2个字节的引用空间,无需指定长度

示例:

// 声明整型数组
int[] arr1;   ✔   推荐使用
int arr1[];// 声明double类型数组
double[] arr2;

// 声明字符串类型数组
String[] arr3;
1.2.2 数组的创建

数组创建——在堆区分配数组的存储空间,必须指定数组的长度;如果一个数组只声明没有创建,则数组不可使用

//创建int类型数组
arr1 = new int[4];

//创建double类型数组
arr2 = new double[7];

//创建String类型数组
arr3 = new String[5];

在这里插入图片描述

1.3 数组的初始化

数组的作用是用来存储数据的

1.3.1 静态初始化

静态初始化——在数组创建的同时,将数据存储到数组中

代码示例:

int[] arr4 = {12,23,34,45};    -->   int[] arr4 = new int[4]{12,23,34,45};
double[] arr5 = {3.2 , 5.5 , 7.9 , 12.13 , 99.0};
String[] arr6 = {"a","bb","ccc","dddd","eeeee"};

内存示意图:

在这里插入图片描述

1.3.2 动态初始化

先完成数组的声明和创建,然后通过数组的索引进行初始化

数组的索引:当完成数组的创建之后,每个存储数据的单元格默认有一个编号,编号从0开始,到数组的长度-1结束;我们可以通过编号来指定数组中的特定存储单元(元素),这个编号就是数组的索引。

int[] arr = new int[4];

//通过数组的length属性可以获取数组的长度
int len = arr.length;

//通过for循环给数组的元素动态赋值
for(int i=0; i<arr.length ; i++ ){
    arr[i] = i*2+1;    // 1   3   5  ....        
}
1.3.3 数组元素的默认值

注:如果一个数组创建之后没有手动初始化,数组中是有默认值的

  • byte[] short[] int[] long[] ---- 0
  • float[] double[] ---- 0.0
  • char[] ---- ‘\u0000’
  • boolean[] ----- false
  • String[] ----- null
1.4 获取数组元素

数组元素——就是存储在数组单元格中的值

1.4.1 获取单个元素

通过数组名[索引]获取数组中的指定元素

  • 如果索引超出范围则会抛出ArrayIndexOutOfBoundsException的异常提示
1.4.2 遍历数组

遍历——将数组中的所有元素依次取出

代码示例:

int[] arr = new int[7];
for(int i=0 ; i<arr.length ; i++){
    arr[i] = i*2+1;
}
//获取数组元素
// for循环遍历数组
for( int i=0; i<arr.length ; i++ ) {
    int a = arr[i];
    System.out.print(a+"\t");
}
System.out.println();

// foreach遍历数组
for(int a : arr){
    System.out.print(a+"\t");
}
System.out.println();

//倒序遍历
for(int j=arr.length-1 ;  j>=0 ; j-- ){
    int b = arr[j];
    System.out.print(b+"\t");
}
System.out.println();
String[] names = {"余毅","游泳聪","易施妍","宋佳鹏","杜全龙"};

//for循环遍历
for(int i=0; i<names.length ; i++){
    String name = names[i];
    System.out.print(name+"\t");
}
System.out.println();

//foreach遍历
for(String name:names){
    System.out.print(name+"\t");
}
System.out.println();

//倒序遍历
for(int j=names.length-1 ; j>=0 ; j--){
    System.out.print( names[j] +"\t");
}
1.5 数组的应用
  1. 从键盘输入5个名字,存储在数组中,并遍历打印
  2. 从键盘输入5个数字,存储在数组中,然后找到最大的一个并打印
  3. 从键盘输入5个数字,存储在数组中,然后计算平均值
  4. 定义一个int数组,静态初始化一组数字,然后从控制台输入一个数字,如果输入的数字在数组中存在则打印索引,如果不存在则输出-1;

T1:从键盘输入5个名字,存储在数组中,并遍历打印

package com.qfedu.array_2;

import java.util.Scanner;

/**
 * 从键盘输入5个名字,存储在数组中,并遍历打印
 */
public class ArrayPractice01 {

    public static void main(String[] args) {

        //1.声明并创建数组
        String[] names = new String[5];

        //2.创建扫描器(读取键盘在控制台输入的数据)
        Scanner sc = new Scanner( System.in );

        //3.数组初始化:读取没名字,存放到数组中
        for(int i=0 ; i<names.length ; i++){
            System.out.println("请输入第"+(i+1)+"个名字:");
            names[i] = sc.nextLine();
        }

        //4.遍历打印names中存的名字
        for (String name : names ) {
            System.out.print(name + "\t");
        }

    }

}

T2:从键盘输入5个数字,存储在数组中,然后找到最大的一个并打印

在这里插入图片描述

package com.qfedu.array_2;

import java.util.Scanner;

/**
 * 从键盘输入5个数字,存储在数组中,然后找到最大的一个并打印
 */
public class ArrayPractice02 {

    public static void main(String[] args) {

        //1.声明及创建数组
        int[] nums = new int[5];

        //2.创建扫描器
        Scanner sc = new Scanner( System.in );

        //3.数组初始化
        for (int i = 0; i < nums.length ; i++) {
            System.out.println("请输入第"+(i+1)+"个整数:");
            nums[i] = sc.nextInt();
        }

        //4.从nums数组中找到最大的一个整数
        int max = nums[0];
        for(int j=1; j<nums.length ; j++){
            if(nums[j]>max){
                max = nums[j];
            }
        }
        System.out.println("最大值为:"+max);

    }

}

T3:从键盘输入5个数字,存储在数组中,然后计算平均值

package com.qfedu.array_2;

import java.util.Scanner;

/**
 * 从键盘输入5个数字,存储在数组中,然后计算平均值
 */
public class ArrayPractice03 {

    public static void main(String[] args) {

        double[] nums = new double[5];
        Scanner sc = new Scanner(System.in);
        for (int i=0 ; i<nums.length ; i++){
            System.out.println("请输入第"+(i+1)+"个数值:");
            nums[i] = sc.nextDouble();
        }
        //求平均值
        double sum = 0;
        for (int j=0; j<nums.length ;j++){
            sum = sum + nums[j];
        }
        double avg = sum / nums.length;
        System.out.println("平均值为:"+avg);
    }

}

T4:定义一个int数组,静态初始化一组数字,然后从控制台输入一个数字,如果输入的数字在数组中存在则打印索引,如果不存在则输出-1;

package com.qfedu.array_2;

import java.util.Scanner;

/**
 * 定义一个int数组,静态初始化一组数字,然后从控制台输入一个数字,如果输入的数字在数组中存在则打印索引,如果不存在则输出-1;
 */
public class ArrayPractice04 {

    public static void main(String[] args) {
        //1.静态初始化一个数组
        int[] nums = {12,23,34,45,79,18,5,7,31};

        //2.键盘输入一个数字
        System.out.println("请输入一个整数:");
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();   // 34

        //3.从nums查找是否存在m
        int index = -1;
        for(int i=0; i<nums.length ; i++){
            if( nums[i] == m ){
                index = i;
            }
        }
        System.out.println(index);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值