Java数组

1.数组

  • 数组概念:数组是一种容器,可以同时存放多个数据值。
  • 数组特点:1.数组是一种引用数据类型,2.数组中数据的类型必须统一,3.数组的长度在程序运行期间不可改变。

2.数组的初始化

  • 动态初始化(指定长度)
    数据类型[] 数组名称 = new 数据类型[数组长度];

    注意:右侧数据类型必须和左边的数据类型保持一致,可以是基本数据类型,也可以是引用数据类型;数组长度是一个int数字,表示可以保存多少数据。

  • 标准化的静态初始化(指定内容)
数据类型[] 数组名称 = new 数据类型[] {元素1, 元素2, ...};

注意:虽然静态初始化没有直接告诉长度,但是根据大括号里的元素具体内容,也可以自动推算出来长度。

  • 省略格式的静态初始化

数据类型[] 数组名称 = {元素1, 元素2, ...};

注意:如果不确定数组当中的具体内容,用动态初始化,已经确定了具体的内容,用静态初始化。

3.访问数组元素

  • 直接打印数组名称,得到的是数组对应的内存地址哈希值,是一个16进制数
  • 格式:
数组名称[索引值]
  • 注意:索引值从0开始,一直到(数组的长度-1)为止。使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值,如果是整数类型,默认为0;如果是浮点类型,默认为0.0;如果是字符类型,默认是'\u0000’;如果是布尔类型,默认是false;如果是引用类型,默认是null。静态初始化也有默认值,只是系统马上将默认值替换为大括号中具体的数值。

4.Java内存划分

  • 栈(Stack):存放方法中的局部变量,局部变量是指方法的参数或者方法内部的变量,一旦超出作用域,立刻从栈内存中消失。方法的运行一定要在栈里
  • 堆(Heap):凡是new出来的东西都在堆当中,堆内存里的东西都有一个16进制的地址值,里面的数据都有默认值。
  • 方法区(Method Area):存储.class相关信息,包含方法的信息。
  • 本地方法栈(Native Method Stack):与操作系统相关。
  • 寄存器(pc Register):与CPU相关。

5.数组的内存

Java数组_第1张图片

6.两个引用指向同一个数组

int[] arrayA = new int[3];
int[] arrayB = arrayA;

7.数组常见异常

  • ArrayIndexOutOfBoundsException数组索引越界异常,如果访问数组元素时,索引编号不存在,就会报该异常。原因:索引编号写错了,解决:修改为存在的正确索引编号。
  • NullPointerException空指针异常,数组必须进行new初始化才能使用其中的元素,如果只是赋值了一个null,没有进行new创建,就会报该异常。原因:忘了new,解决:补上new。

8.数组长度

获取数组长度:

数组名称.length

注意:数组一旦创建,程序运行期间,长度不可改变。

Java数组_第2张图片

9.遍历数组

遍历数组的格式:

int len = array.length;
for(int i = 0; i

10.数组元素反转

  • 数组元素反转其实就是对称位置的元素交换
  • 对称位置需要两个索引,int min = 0; int max = array.length - 1;
  • 用第三个变量倒手
  • 什么时候停止交换?(1)min == max  (2)min > max   ->   什么时候交换? min < max  
for(int min = 0, max = array.length - 1; min < max; min++, max--){
    int temp = array[min];
    array[min] = array[max];
    array[max] = temp;
}

11.数组作为方法参数或方法返回值

  • 注意:一个方法可以有0、1、多个参数,但是只能有0或1个返回值,不能有多个返回值
  • 希望一个方法产生多个结果数据进行返回,可以使用数组作为返回类型
  • 任何数据类型都能作为方法的参数类型或者返回值类型。
  • 数组作为方法的参数和返回值,传递的都是数组的地址值

你可能感兴趣的:(java,java)