数组:
1、数组是存储同一种数据类型的多个元素的集合,也可以看成是一个容器
2、数组既可以存储基本数据类型,也可以存储引用数据类型。
数组的语句定义格式:
数据类型[ ] 数组名 ;
举例:int[] arr;
数据类型 数组名[ ];
举例:int arr[];定义一个存放int类型数据的数组
现在常用的是第一种格式
初始化就是给这个变量开辟一个空间,为将来的值提供存放的空间
动态初始化:
自己给定数组的长度,系统初始化值默认为0;
格式:
数据类型[] 数组名 = new 数据类型[ 数组的长度];
int[] arr=new int[i];
int:数据的类型
[]:表示一个一维数组
arr:表示数组的名字,符合标识符规则
new:给定数组一个空间
int:数据的类型
i:数组的长度
int[] arr = new int[3];
System.out.println(arr);这里输出的arr实际上是arr的地址值
java为了提高程序的运行效率,就对数据在内存中做了一些划分。、
具体将jvm在内存中划分了五个部分:
栈:存储着一些局部变量
堆:存储着一些new出来的东西,new出来的一律在堆中
方法区:
本地方法区:
寄存器:
局部变量:定义在方法上或者方法内部的变量,称为局部变量
重点:堆内存中的系统默认值是如何去给的呢?
根据元素的数据类型不同,默认值也不同
基本数据类型:
byte,short,int,long 0
float,double 0.0
char ' \u0000'
boolean false
引用数据 null
数组的赋值是通过数组中的索引给元素进行赋值
静态初始化:
自己初始化变量,系统根据你给的初始化变量来给定数组的长度
静态初始化的格式:
数据类型[] arr =new 数据类型[]{数组1,数组2};
举例:int[] arr = new int[]{11,22,33};
简化:
数据类型[] 数组名字 = { 元素1,元素2};
格式:
int[] arr={元素1,元素2,元素3};
数组中的常见错误:
1、ArrayIndexOutOfBoundsException 数组索引越界异常
访问了不该访问的索引
2、NullPointerException 空指针异常
再java开发中我们如何可以获取数组的长度?
java中数组提供一个属性供我们使用,可以获取数组的长度
这个属性叫做:length;
使用格式:数组名.length
用新的数组来接收旧的数组中的值是不可取的
因为: 创建新的数组,开辟了新的堆空间,会造成资源的浪费
二维数组:
二维数组就是里面的元素是一维数组
二维数组的语句定义格式:
数据类型[] [] 数组名= new 数据类型[m][n];
格式1:
int[] [] arr=new int[3][2];
一下写法也是正确的:
1、int[] arr[] =new int[3][2];
2、int arr[][] =new int[][];
格式2:
数据类型[] [] 变量名 = new 数据类型[m][];
格式3:
数据类型[][] 变量名={{元素1,元素2},{元素1,元素2}};