数组

数组

  1. 是引用数据类型(同String角色)

  2. 数组也有父类(比如:.length)且也继承Object类,但其是C++语言实现,所以没有java代码!
    (1)而且此父类并没有重写Object的方法;
    (2)所以出现工具类Arrays;
    (3)注意print输出拼接的方式
    数组_第1张图片数组_第2张图片

  3. 长度不可变 => length是其属性==>不能增删

  4. 存储物理空间地址连续

  5. 数组是什么就存什么。int[ ]就直接存int (不会自动装箱);若存进Object[ ]就会自动装箱。【数组存储同种数据类型】

Object[] arrays = {
     2020};

System.out.print((int)arrays[0] + 10);编译报错!编译器认为强转可能不成功!
正确写法:
if(arrays[0] instanceof Integer){
     
	int a = (int)arrays[0];
	System.out.print(a + 10);
}...
  1. 以第一个元素的地址作为这整个数组引用的值
  2. 是查询效率最高的一个数据结构
  3. 数组很难存储大数据量【因为很难在内存中找到一块特别大的连续内存空间】

其实数组对象里面还有length等属性:
数组_第3张图片

初始化数组

  1. 也可以 int array1[ ];
  2. 只有这两种方法初始化! 数组是定长的,初始化一定要声明出来!
  3. int[] a = {}; <==> int[] a = new int[0]; 等价,都创建了长度为零的数组对象【有等号就会有对象,不会有空指针异样】
    第二种初始化一定一定会赋默认值!
    数组_第4张图片
  4. 多态
    在这里插入图片描述
嗯 又来一个恶心的

其实也没啥,和匿名类一个道理。
数组_第5张图片

main方法中的(String[ ] args)

接受用户传递参数(java admin 123)
数组_第6张图片

数组扩容方法

由于数组长度确定后不能够改变,所以数组扩容,需要把原数组内容拷贝到新数组内容中去,代价较大!
方法:arraycopy(源数组, 拷贝起始下标,目标数组, 目的起始下标,拷贝长度 ):(注意是System中)
在这里插入图片描述

二维数组

数组_第7张图片同样:
在这里插入图片描述
拓展:当要表示多维数组时,用数组往往会更加直观。比如 Object[][] array;而用容器的话则需要这样定义:ArrayList< ArrayList < Object > > array。

代码:com.neuq.Hotel数组赋值前一定要声明大小初始化!!!

数组算法

排序算法

数组工具类 java.util.Arrays(注意sssssss)

包含sort、select等多种方法,且全部为static方法

你可能感兴趣的:(Java)