数组
-
是引用数据类型(同String角色)
-
数组也有父类(比如:.length)且也继承Object类,但其是C++语言实现,所以没有java代码!
(1)而且此父类并没有重写Object的方法;
(2)所以出现工具类Arrays;
(3)注意print输出拼接的方式
-
长度不可变 => length是其属性==>不能增删
-
存储物理空间地址连续
-
数组是什么就存什么。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);
}...
- 以第一个元素的地址作为这整个数组引用的值
- 是查询效率最高的一个数据结构
- 数组很难存储大数据量【因为很难在内存中找到一块特别大的连续内存空间】
其实数组对象里面还有length等属性:
初始化数组
- 也可以 int array1[ ];
- 只有这两种方法初始化! 数组是定长的,初始化一定要声明出来!
- int[] a = {}; <==> int[] a = new int[0]; 等价,都创建了长度为零的数组对象【有等号就会有对象,不会有空指针异样】
第二种初始化一定一定会赋默认值!
- 多态
嗯 又来一个恶心的🤢
其实也没啥,和匿名类一个道理。
main方法中的(String[ ] args)
接受用户传递参数(java admin 123)
数组扩容方法
由于数组长度确定后不能够改变,所以数组扩容,需要把原数组内容拷贝到新数组内容中去,代价较大!
方法:arraycopy(源数组, 拷贝起始下标,目标数组, 目的起始下标,拷贝长度 ):(注意是System中)
二维数组
同样:
拓展:当要表示多维数组时,用数组往往会更加直观。比如 Object[][] array;而用容器的话则需要这样定义:ArrayList< ArrayList < Object > > array。
代码:com.neuq.Hotel数组赋值前一定要声明大小初始化!!!
数组算法
排序算法
数组工具类 java.util.Arrays(注意sssssss)
包含sort、select等多种方法,且全部为static方法