java学习day-4 数组

一、数组
1、定义

能存储数据的容器,用来存储具有相同数据类型的数据集合,可以使用自定义的名字来引用数组中存储的数据。

2、特点

数组可以存储任何类型的数据,包括基本数据类型和引用数据类型,但是一旦指定了数组的类型之后,就只能用来存储指定类型的数据。

3、数组的使用

语法:

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

//声明一个int类型 numebr的数组
int [] number;
int number [];//以上两种方法都可以
//命名方式有很多种,熟悉那种用哪一种都ok

二、数组的赋值
1、使用new运算符
int [] arr = new [10];
// 意思是把arr 这个数组的长度设置为10,
// 但是数组的长度一旦被设置,就无法更改
2、直接初始化数组
//也可以直接指定数据类型
int [] arr = {1,2,3,4,5,6};
//但是写入必须是相同类型的数据才行
3、数组中存储的数据注意事项

①如果需要访问数组中的元素,需要使用数组名[下标]的形式访问。

②注意数组的最大下标是:数组的长度-1;最开始的下标是0。

③数组的长度可以通过使用数组的属性length获取,每一个数组对象都会有length属性来表示数组的长度,也即数组元素的个数。

System.out.println(number[1]);
//输出number数值第2个数字
4、遍历数组

若要把数组内的所有元素都输出一遍,可以采用for循环的方式,也可以用其他的方式都ok

int [] numebr = {1,2,3,4,5};
for(int i=0;i<number.length;i++){
     System.out.println(number[i]);
}
//这里遍历数组中的数据有很多中方法,不只是普通for循环。还有foreach,Iterator迭代器等等。
三、二维数组

二维数组的创建同样有两种方式:

1、使用new运算符
int[] a = new int[8];

//这其实是创建数组,并未初始化,在使用new时,必须显示或者隐示地确定数组的长度,这里是显示确定

int[] a1 = new int[]{1,2,3,4,5,6,7,8};

//这是隐示确定,当然也可以在声明数组后再对数组进行初始化

int[] b;
b = new int[]{1,2,3};    //不可如下初始化数组
int[] c = new int[3];
//c = {1,2,3};

//这是错误的,在eclipse中的错误提示是"Array constants can only be used in initializers",
//即c已经是一个数组常量了,只能在分配空间时对其初始化,要区分c和c[i]
2、声明数组并且赋初始值
int [][] number = {{1,2,3,},{4,5,6,},{7,8}};

//二维数组就是在一个大的数组内,还包含了二级数组,可以理解成嵌套的意思
// 若要输出二维数组,也可以采用多个for循环的方式
 
int [][] number1 = {{1,2,3},{4,5,6},{7,8,9}};
   for(int i =0;i<number1.length;i++){
       for (int j = 0;j<number1.length;j++){
             System.out.println(number1[i][j]);
       }
  }

注意:如果是二维数组,在没有完全初始化的情况下,java会忽略未初始化的单元,直接输出下一个单元。

public class ArrayTest {
    public static void main(String args[]) {
        int[][] a1 = {{1,2},{3,4,5,6}};
        for(int i = 0;i < a1.length;i++)
            for(int j = 0;j < a1[i].length;j++){
                System.out.println(a1[i][j]);
            }
        System.out.close();
    }
}

数组越界属于运行时异常,当数组访问长度超过数组本身长度时,就会抛出数组越界异常 java.lang.ArrayIndexOutOfBoundsException

3、数组指向和传递

引用传递的本质是栈内存中的"字段(集合)"指向堆内存中的数据。

当发生数组的赋值或者数组的函数参数传递时,传递的是值得引用,也就是将指向该数据的指针传递,使得指向同一块数据内存,从而达到数组传递的目的。所以,当堆内存的数据时,其他指向该数据段的引用都会被修改。

四、常见的异常
  1. 数组下标越界异常:ArrayIndexOutOfBoundsException
  2. 字符串下标越界异常:StringIndexOutOfBoundsException
  3. 类转换异常:ClassCastException
  4. 空指针异常:NullPointerException
  5. 数字格式化异常:NumberFormatException
  6. 输入无法匹配异常:InputMismatchException
  7. 解析异常:ParseException
  8. 没有这样的元素异常:NoSuchElementException
  9. 文件找不到异常:FileNotFoundException
  10. 算术异常:ArithmeticException
  11. 错误的参数异常:IllegalArgumentException
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值