Java学习----数组

数组

数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。

概念:

  • Java 语言中提供的数组是用来存储固定大小的同类型元素。

特点:

  • 数组中的元素类型必须一致
  • 数组本身是引用数据类型,但是里面的元素既可以是基本数据类型,也可以是引用数据类型
  • 数组的长度一旦给定无法改变
    声明:

数据类型 [] 数组名;

数组类型 数组名[]

int[] arr;// 声明数组
String arr1[];//声明数组

值得注意的是在main函数中,只有两个位置可以进行修改:

  • args
  • [ ] 的位置

数组的动态初始化

定义: 给定数组的长度,由系统分配空间和初始值;

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

数组中数据的存取

数组的索引: 数组中元素的序号

​ 从0开始的, 最大值就是数组的长度减1

给数组中的元素赋值:

​ 数组名[索引值] = 要赋的值;

取值:

​ 数组名[索引值];

demo1:

int[] arr2 = new int[4];
arr2[0] = 10;
arr2[1] = 20;
arr2[2] = 30;
arr2[3] = 40;
System.out.println(arr2[1]);//20

demo2: 创建一个10个长度的int数组,把1-10 存进去

public class Test1 {
    public static void main(String[] args) {
int[] arr = new int[10];
        for (int i = 0;i<arr.length;i++){
            arr[i] = i + 1;
            System.out.print(arr[i]+"\t");
            }
        }
    }

数组的静态初始化

静态初始化:

​ 给定数组中的元素,由系统根据元素的个数开辟空间并赋值

格式:

​ 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};

​ 简写: 数据类型[] 数组名 = {元素1,元素2,元素3…}; //只有第一个初始化的时候可以这么写;重新赋值不能这写

获取数组的长度:
​ 数组名.length

demo 创建int数组,存入5个元素,求该数组的元素之和, 平均值

public class Test1 {
    public static void main(String[] args) {
        //int[] arr = {23,32,42,45,31}; 适用于数组初始化;
        int[] arr = new int[]{23,32,42,45,31};
        int sum = 0;
        for (int i = 0; i <arr.length ; i++) {
            sum += arr[i];
        }
        System.out.println("数组元素之和为" + sum);
        System.out.println("数组元素的平均值为:" + (double)sum/arr.length);
        
        }
    }

数组的内存分析

  • 栈内存: 局部变量和方法 没有初始化值
  • 堆内存: new出来的东西 有初始化值

​ 基本: 默认值

​ 引用: null

​ 如果堆中没有栈中变量指向时,就会成为垃圾,等待GC自动回收

demo

public class ArrayDemo2 {
    public static void main(String[] args) {
        int[] arr = new int[5];// 创建一个5个长度的int类型的数组 arr

        System.out.println(arr);// 地址值
        System.out.println(arr[0]);// 0
        System.out.println(arr[2]);// 0
        System.out.println(arr[4]);// 0

        arr[3] = 100;
        System.out.println(arr[3]);// 100

        String[] arr2 = new String[3];
        System.out.println(arr2);// 地址值
        System.out.println(arr2[0]);// null
        System.out.println(arr2[1]);// null
        System.out.println(arr2[2]);// null

        arr2[1] = "大";
        System.out.println(arr2[1]);// 大

        String[] arr3 = new String[4];
        arr3[1] = "小";
        arr3 = arr2;
        System.out.println(arr2[1]);// 大
        System.out.println(arr3[1]);// 小
        System.out.println(arr3[3]);// null
    }
}

5.数组中的常见异常

  • 空指针异常:java.lang.NullPointerException null调用里面的东西

  • 数组角标越界异常:java.lang.ArrayIndexOutOfBoundsException 索引超出了最大范围

public class ArrayDemo5 {
    public static void main(String[] args) {
        int[] arr = new int[4];
        String[] str = new String[3];
        "helloworld".equals(str[0]);
        "helloworld".equals(null);
    }
}

数组最值

打印数组中的最大值和最小值

public static void printMaxAndMin(int[] arr) {
		//2.设置一个变量存储最大值
		int max = arr[0];
		int min = arr[0];
		//3.遍历数组,用max和数组中的元素作比较
		for(int i=0;i<arr.length;i++) {
			if(arr[i]>max) {// 数组中的元素比max大,就把max改了
				//重新赋值
				max = arr[i];
			}
			//最小值的比较,如果数组中的元素比最小值还小
			if(arr[i]<min) {
				min = arr[i];
			}
		}
		//4.在循环的外边打印最大值
		System.out.println("最大值为:"+max);
		System.out.println("最小值为:"+min);
	}

数组逆序
将一个数组逆序排列

 public static void arrayReverseOrder(int[] arr) {
        System.out.println("逆序前:");
        ArrayUtil.printArr(arr);
        for (int start = 0, end = arr.length - 1; start < end; start++, end--) {
            int temp = arr[end];
            arr[end] = arr[start];
            arr[start] = temp;

        }
        System.out.println("逆序后:");
        ArrayUtil.printArr(arr);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值