数组定义格式

1.概念: java中的数组就是一个容器,可以存储多个数据,但是多个数据的类型必须保持一致
	2.特点:
		(1)可以存储多个数据
		(2)多个数据的类型必须保持一致
		(3)数组的长度一旦确定,将永远不可以发生改变
数组变量的定义
1.数组变量定义格式一:		推荐使用
	数据类型[] 数组名称;
2.数组变量定义格式二:		不推荐使用的
	数据类型 数组名称[];
数组的第一种初始化方式
数组的第一种初始化方式(动态初始化: 指定数组长度)
	1.格式:    	
		数据类型[] 数组名称 = new 数据类型[长度];
  
    2.格式解释:    	
		(1)左侧数据类型: 表示该数组容器中可以存储什么类型的数据
		(2)左侧[]: 代表数组的意思
		(3)数组名称: 就是一个标识符,方便使用数组
		(4)=: 表示赋值的意思,把=号右侧的数组容器在内存中的地址值,赋值给=号左侧的数组变量
		(5)new: JVM在内部创建数组的过程
		(6)右侧数据类型: 和左侧保持一致
		(7)长度: 规定了数组容器中可以存储多少个数据
数组的第二种初始化方式
数组的第二种初始化方式(标准格式静态初始化: 指定元素)
1.格式:
	 数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,...,元素n};	

2.注意:    	
    (1)右侧{}中的数组元素之间使用逗号(,)隔开,最后一个元素后面没有逗号
    (2)右侧[]中不能写长度,只要写就报错,JVM会根据{}中元素的个数推导数组的长度
数组的第三种初始化方式
数组的第三种初始化方式(简化格式静态初始化: 指定元素)
1.格式:   	
	数据类型[] 数组名称 = {元素1,元素2,...,元素n};
2.注意:
  	(1)右侧{}中的数组元素之间使用逗号(,)隔开,最后一个元素后面没有逗号
    (2)不能写长度,只要写就报错,JVM会根据{}中元素的个数推导数组的长度
    (3)虽然没有写new,但是底层仍然有new的过程,完成数组的创建
    (4)动态初始化和标准格式的静态初始化数组,可以分成两步完成
    (5)简化格式静态初始化,只能一步完成,不可以分成两步(java中的用法规定)
java中的内存分配
1.方法区: 存储可以运行的class文件。
2.方法栈: 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
3.堆内存 存储对象或者数组,new来创建的,都存储在堆内存。
4.寄存器 给CPU使用
5.本地方法栈 JVM在使用操作系统功能的时候使用

注意:
	1.栈内存: 运行方法的,存储方法中定义的变量的
	2.堆内存: 存储的是所有new出来的内容
数组获取最大值元素
需求:
	求int数组元素最大值
        
实现步骤:
	1.定义int数组array,并根据题目需求进行初始化
	2.假设索引为0的元素是最大的,保存到int变量max中
	3.使用for循环依次获取后面(从索引1开始)的每个元素
	3.1 如果当前元素值 大于 max,说明max中已经不是最大的了
	3.2 把当前元素值,赋值给max
	4.for循环结束后,打印max的值	
public class Demo03ArrayMax {
    public static void main(String[] args) {
        //1.定义int数组array,并根据题目需求进行初始化
        int[] array = {5, 15, 2000, 10000, 100, 4000};

        //2.假设索引为0的元素是最大的,保存到int变量max中
        int max = array[0];

        //3.使用for循环依次获取后面(从索引1开始)的每个元素
        for (int i = 1; i < array.length; i++) {
            //3.1 如果当前元素值 大于 max,说明max中已经不是最大的了
            if (array[i] > max) {
                //3.2 把当前元素值,赋值给max
                max = array[i];
            }
        }
        //4.for循环结束后,打印max的值
        System.out.println("最大值: "+max);
    }
}

数组获取最大值的索引
public class Demo08 {
    /*
    * 根据索引求最大值
    * */
    public static void main(String[] args) {
        int[] array = {100, 200, 300, 400, 500, 20, 900, 299};
        int max = 0 ; //定义最大值的索引为 0
        for (int i = 1; i < array.length; i++) {
            if (array[i] > array[max]) { // 如果其它的值大于索引为0 的值
                max = i ;   //将最大值的索引赋值给max
            }
        }
        System.out.println("最大值的索引是: " + max + " ,最大值的索引所对应的最大值是: " + array[max]);
    }
}

数组越界异常
数组操作的常见问题一:
	数组索引越界(超出了范围)异常
        1.问题描述:
			java中使用java.lang.ArrayIndexOutOfBoundsException类用来描述索引越界问题的
			
        2.产生原因:            
			当使用int数字作为索引获取数组元素时,索引值已经超出了数组的索引范围,
			无法获取该索引对应的元素
			(1)打印异常信息
			(2)停止程序的执行
			
        3.解决方案:
			(1)不使用超出索引范围的int数字来获取数组元素
			(2)修改索引越界的数字,让它在数组索引范围内
public class Demo01Problem {
    public static void main(String[] args) {
        //定义int数组array,并采用简化格式静态初始化
        int[] one = {100,200,300};
        System.out.println(one);//地址值
        System.out.println(one[0]);//100
        System.out.println(one[1]);//200
        System.out.println(one[2]);//300
        //System.out.println(one[3]);//索引3不存在,报异常,导致程序停止执行
        System.out.println(".................");
    }
}

数组空指针异常
数组操作的常见问题二:
	空指针异常
    	1.问题描述: 
			java中使用java.lang.NullPointerException类,来描述空指针异常
			
        2.产生原因:        	
			null是引用类型的空常量,可以给任意引用类型的变量赋值,但是一旦引用变量的值是null时,
			说明该引用变量已经不再执行堆内存的任何空间,数组变量的值是null时,说明该数组变量已经不再执行堆内存空间的任何数组了,
			所以就无法通过索引的方式访问数组元素了,只要访问,就会报出空指针异常
			(1)打印异常信息
			(2)停止程序的执行
			
        3.解决方案:
        	(1)不使用值是null的数组变量来获取数组元素
            (2)找到数组变量值是null的地方,给数组变量重新赋值,让改数组变量重新指向一个新的数组空间
            
public class Demo02Problem {
    public static void main(String[] args) {
        //定义int数组array,并采用简化格式静态初始化
        int[] one = {100,200,300};

        System.out.println(one);//地址值

        System.out.println(one[0]);//100

        System.out.println(one[1]);//200

        System.out.println(one[2]);//300

        one = null;

        System.out.println(one);//null

        //System.out.println(one[0]);//报出空指针异常: 导致程序停止运行并打印异常信息

        System.out.println(".................");
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值