数组的概念
数组是一种容器,可以存放多个数据值
一个数组就能存放大量数据
数组的特点
1.数组是一种引用数据类型
2.数组当中的多个数据,类型必须统一
3.数组的长度在运行过程中无法改变
数组的初始化:在内存中创建一个数组,并且向其中赋予一些默认值
两种常见的初始化
1。动态初始化(指定长度)
2。静态初始化(指定内容)
动态初始化数组的格式
数据类型[] 数组名称 = new 数据类型[数组长度]
解析含义:左侧数据类型,就是数组中保存的数据,全都是统一的什么类型
左侧的中括号:代表是一个数组
数组名称 给数组起一个名字
右侧的new,代表创建数组的动作
右侧的数据类型:必须和左边的数据类型保持一致
右侧中括号的长度:也就是数组中,到底可以保存多少个数据,是一个int数字
静态初始化:在创建数组的时候,不直接指定数据个数多少,而是将具体的数据内容进行指定
基本格式:
数据类型[] 数组名称 =new 数据类型[]{元素1,元素2…}
虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,也可以推算出来长度
使用静态初始化数组的的时候,格式还可以省略一下
标准格式: 数据类型[] 数组名称 =new 数据类型[]{元素1,元素2…}
省略格式: 数据类型[] 数组名称 ={元素1,元素2…}
注意事项:
静态初始化,可以拆分成为两个步骤, 先声明,后new
使用建议,如果不确定数组中的具体内容,用动态初始化,否则,已经确定了具体的内容,使用静态初始化
直接打印数组名称,得到的数组对应的内存地址哈希值
访问数组元素的格式,数组名称[索引值]
索引值,就是一个int数字,代表数组当中元素的编号,
注意,索引值从0开始,一直到数组的长度-1
使用动态初始化数组的时候,其中的元素,将会自动有一个默认值
如果是整数类型 默认为0
浮点类型 0。0
字符类型 ‘/u0000’
布尔类型 false
引用类型 null
静态初始化其实也有默认值,只不过系统自动马上将默认值替换成了大括号当中的具体数值
Java中的内存划分
划分成5个部分
第一:栈内存 (Stack)存放的是方法中的局部变量
局部变量:方法的参数,或者是方法内部的变量{}
局部变量有作用域,一旦超过作用域,立刻从栈内存中消失
方法运行一定在栈中运行
第二:堆内存(heap)凡是new出来的东西,都在堆内存
堆内存里面都有一个地址值,16进制
堆内存里面的数组都有默认值,
第三:方法区,存储,class相关信息,包含方法的信息
第四:本地方法栈,Native Mthod Stack
与操作系统相关,
第五:寄存器与 CPU相关
从main方法,原来main方法在方法区,然后进栈,在栈内存中开辟了一个新空间
package demo1;
public class Array {
public static void main(String[] args) {
int arrayA[]={0,0,0};
int arrayB[]=arrayA;
System.out.println(arrayA);
System.out.println(arrayA[0]);
System.out.println(arrayA[1]);
System.out.println(arrayA[2]);
System.out.println(arrayB);
System.out.println(arrayB[0]);
System.out.println(arrayB[1]);
System.out.println(arrayB[2]);
arrayA[1]=10;
arrayA[2]=30;
System.out.println(arrayA[0]);
System.out.println(arrayA[1]);
System.out.println(arrayA[2]);
System.out.println(arrayB[0]);
System.out.println(arrayB[1]);
System.out.println(arrayB[2]);
arrayB[1]=50;
arrayB[2]=700;
System.out.println(arrayA[0]);
System.out.println(arrayA[1]);
System.out.println(arrayA[2]);
System.out.println(arrayB[0]);
System.out.println(arrayB[1]);
System.out.println(arrayB[2]);
}
}
如果访问数组元素的时候
索引编号并不存在,将会变成数组越界异常
原因:索引编号写错了
解决:修改成为存在的数组编号
空指针异常
所有引用类型,都可以赋值为一个null值,代表其中什么都没有
数组必须进行new初始化才能使用其中的元素
如果只是赋值了一个null,没有进行new创建
将会发生异常:
空指针异常 NullPointerException
原因:忘了new
获得数组的长度
.length
数组一旦创建,程序运行期间,长度无法改变
遍历数组,说的就是对数组当中的每一个元素进行逐一挨个处理
默认的处理方式就是打印输出
一个方法可以有0、1、多个参数,但是只能有0或1个返回值,不能有多个返回值怎么办
如果希望一个方法当中产生了多个结果数据进行返回,怎么办
解决方案,使用一个数组当做返回值即可
任何数据类型都能作为方法的参数类型,或者返回值类型
数组作为方法的参数,传递进去的其实是数组的地址值
数组作为方法的返回值,返回的其实也是数组的地址值