java数组踩过的坑

java数组踩过的坑

导读

通过阅读本文,可以了解如下的一些信息:

  • 了解在运用数组的时候,可能会犯的一些基本的错误
  • 了解数组的常见异常,并且知道如何捕获这些异常

数组的一些基本坑

java数组中只能保存相同类型的数据

实例

import java.util.Arrays;
public class Demo{
	public static void main(String[] args){
		
		int[] arrayName={1,2,"4",5};
		System.out.println(Arrays.toString(arrayName));			
	}
}

运行结果

Demo.java:10: 错误: 不兼容的类型: String无法转换为int
		int[] arrayName={1,2,"4",5};
		                     ^
1 个错误

当出现不同类型的数据在数组中的时候会出现编译错误。

在数组声明中包含数组长度永远是不合法的

实例

public class Demo{
	public static void main(String[] args){
		
		int[5] arrayName;	
			
	}
}

运行结果

Demo.java:10: 错误: 需要']'
		int[5] arrayName;
		    ^
Demo.java:10: 错误: 不是语句
		int[5] arrayName;
		   ^
Demo.java:10: 错误: 不是语句
		int[5] arrayName;
		       ^
3 个错误

当在声明的时候定义数组长度,也会出现编译错误。因为,声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。

数组构造的时候必须指定长度

假如没有指定数组的长度会出现编译错误如下

实例

public class Demo{
	public static void main(String[] args){
		
		int[] arrayName=new int[];		
	}
}

编译结果

Demo.java:10: 错误: 缺少数组维
		int[] arrayName=new int[];
		                         ^
1 个错误

数组一旦定义,就只能通过下标添加数据

实例

import java.util.Arrays;
public class Demo{
	public static void main(String[] args){
		
		int[] arrayName=new int[4];
		arrayName[0]=1;
		arrayName[1]=2;
		arrayName[2]=3;
		arrayName[3]=4;
		System.out.println(Arrays.toString(arrayName));		
	}
}

运行结果

[1, 2, 3, 4]

假如通过赋值添加会出现编译错误

实例

public class Demo{
	public static void main(String[] args){
		
		int[] arrayName=new int[4];
		arrayName={1,2,3,4};	
			
	}
}

编译结果

Demo.java:11: 错误: 非法的表达式开始
		arrayName={1,2,3,4};
		          ^
Demo.java:11: 错误: 不是语句
		arrayName={1,2,3,4};
		           ^
Demo.java:11: 错误: 需要';'
		arrayName={1,2,3,4};
		            ^
3 个错

数组一旦定义,长度不可修改

实例

public class Demo{
	public static void main(String[] args){
		
		int[] arrayName=new int[4];
		arrayName.length=2;		
	}
}

编译结果

Demo.java:11: 错误: 无法为最终变量length分配值
		arrayName.length=2;
		         ^
1 个错误

java数组的异常

主要有两种异常:

  • 超出数组的索引异常(ArrayIndexOutOfBoundsException)
  • 空指针异常(NullPointerException)

超出数组的索引异常
实例

public class Demo{
	public static void main(String[] args){
			
		int[] arrayName=new int[4];
		try{
			System.out.println(arrayName[4]);

		}catch(ArrayIndexOutOfBoundsException e){
			System.out.println("扔出异常:"+e);
		}			
	}
}

运行结果

扔出异常:java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4

空指针异常
实例

public class Demo{
	public static void main(String[] args){
		
		int[] arrayName=new int[4];
		try{
			arrayName=null;
			System.out.println(arrayName.length);

		}catch(NullPointerException e){
			System.out.println("扔出异常:"+e);

		}		
	}
}

运行结果

扔出异常:java.lang.NullPointerException: Cannot read the array length because "<local1>" is null

这里异常的捕获主要是通过try…catch来捕获的,这两种异常是(ArrayIndexOutOfBoundsException和NullPointerException)对其进行捕获就知道是否有异常了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值