【2018/8/5】
- 数组:
- 数组是一种引用数据类型
- 数组当中的多个数据,类型必须统一
- 数组的长度在程序运行期间不可改变
- 两种常见的初始化方式:
- 动态初始化(指定长度)
- 静态初始化(指定内容)
动态 格式:
数据类型[] 数组名称 = new 数据类型[数组长度]
(前后数组类型要一样)
静态 格式:
数据类型[] 数组名称 = new 数据类型[] {1,2,3};
- 使用静态初始化数组,格式可以省略:
数据类型[] 数组名称 = {1,2,3};
注:
- 静态初始化没有直接指定长度,但是仍然会自动推算到长度。
- 静态初始化标准格式可以拆分为两个步骤。
例:int[] arrayB;
arrayB = new int[]{}
动态初始化也可以。
- 静态初始化一旦写成省略形式,就不能拆分了。
使用建议:不确定数组中具体内容,用动态初始化,否则用静态。
- 直接打印数组名称,得到的数组对应的:内存地址哈希值。
- 访问数组元素: 数组名称[索引值]
索引值:Int数字,代表编号。 从0开始,到长度-1为止。
- 整数类型,默认为0;
浮点类型,默认为0.0;
字符类型,默认为‘\u0000’;
布尔类型,默认为false;
引用类型,默认为null;
- Java的内存需要划分为五个部分:
- 栈(Stack):存放的都是方法中的局部变量。【方法的运行一定要在栈当中】
- 局部变量:方法的参数,或者是方法{}内部的变量。
- 作用域:一旦超出作用域,立刻从栈内存当中消失。
- 堆(Heap):凡是new出来的 东西,都在堆当中。
堆内存里面的东西都有一个地址值:16进制
堆内存里面的数据,都有默认值【46】;
- 方法区(Method Area):存储.Class相关信息,包含方法的信息。
- 本地方法栈:与操作系统有关
- 寄存器(PC Register):与CPU相关。
- 0x:16进制。
数组索引越界异常:ArrayIndexOutOfBoundsException
原因:索引编号写错了。
- 所有的引用类型变量,都可以赋值为一个null值。但代表里面什么也没有。
- 数组必须进行new初始化才能使用其中的元素。
如果只是复制了一个Null,没有进行new创建
就会发生:
空指针异常:NullPointerException
- 数组长度: 数组名称。Length
数组一旦创建,程序运行期间,长度不能改变。
- 数组名称.fori(自动打出循环代码)
public class array01 {
public static void main(String[] args) {
int[] array = new int []{2,4,6,8,9,3};
for(int min = 0,max = array.length-1;min<max;min++,max--){
int temp = array[min];
array[min] = array[max];
array[max] = temp;
}
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]);
}
}
public class array01 {
public static void main(String[] args) {
int[] array = new int []{2,4,6,8,9,3};
arrayPrint(array);
}
public static void arrayPrint(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
- 一个方法可以有0、1、多个参数;但是只能有0、1个返回值,不能有多个返回值。
但如果希望方法中产生多个结果数据进行返回,可以用数组作为返回值。
例如:
public class array01 {
public static void main(String[] args) {
int [] result = sum(5,8);
System.out.println(result[1]);
}
public static int[] sum(int a ,int b) {
int[] array = new int[2];
array[0] = a;
array[1] = b;
return array;
}
}