java数组初始化-字符数组初始化为0
发布时间:2023-03-24 09:21 浏览次数:次 作者:佚名
概述
数组的优缺点
优点:检索某个下标对应的元素时效率极高,可以说是检索效率最高的一个数据结构。(Why?)因为每一个元素的内存地址在空间存储上是连续的;每一个元素类型相同,所以占用空间大小一样。
缺点:数组上删除或增加元素的时候效率较低,因为增删元素会涉及到元素的大面积位移(统一向前或向后的位移)。若是删除数组的最后一个元素,是不会有效率影响的。(就跟你排队有人插队是一个道理,麻烦)
一维数组
静态初始化格式:
int[] array = {1, 2, 3, 5};
// 使用静态初始化的方式声明一个int类型的数组
int[] array = {1, 2, 3, 5};
// 数组对象都有length属性
System.out.println("数组中元素的个数:"+a.length); // 数组中元素的个数:4
// 通过下标取数组元素
System.out.println("下标为0的元素:" + a[0]); // 下标为0的元素:1
System.out.println("最后一个元素:" + a[a.length - 1]); // 最后一个元素:5
// 通过下标修改数组元素
a[0] = 10;
System.out.println("下标为0的元素:" + a[0]); // 下标为0的元素:10
//一维数组遍历
for(int i = 0; i < a.length; i++){
System.out.println(a[i]);//i是下标从0 ~ 4
}
// 采用静态初始化,存储Object对象
Object object1 = new Object();
Object object2 = new Object();
Object[] objects = {object1, object2};
for (int i = 0; i < objects.length; i++){
System.out.println(objects[i]);
}
注:ArrayIndexOutOfBoundsException(下标越界时会出现的异常报错,越界:数组下标0 ~ 4,如果取下标为5的元素,就会产生越界,因为没有下标5的元素)
// 配合“方法”一起使用
// 调用方法时传一个数组
int[]× ={1,2,3,4};
printArray(x);
// 另一种形式
// 静态数组的话,语法可以这样写。
printArray(new int[]{1, 2, 3, 4});
public static void printArray(int[] array){
for(int i = 0; i < array.length; i++){
System.out.println(array[i]);
}
}
动态初始化格式:
int[] array = new int[4];//初始化一个长度为 4 的 int类型数组,每个元素默认值0
String[] names = new String[2];//初始化长度为 2 的 String类型数组,每个元素默认值null。
//声明/定义一个数组,采用动态初始化的方式创建
int[] a = new int[4]; //创建长度为4的int数组,数组中每个元素的默认值是0
//遍历数组
for (int i = 0; i < a.length; i++){
System.out.println("数组中下标为"+i +"的元素是:"+ a[i]);
}
注:其他操作同静态一致
二维数组
// 二维数组中 [][] 表示的是 行 和 列,行列的下标也是从0 ~ n
int[][] a ={
{1, 2, 3},
{10, 20, 30, 40, 50},
{6, 7, 8, 9},
{10}
};
System.out.println(a.length); //4,表示a数组中有多少一维数组
System.out.println(a[1].length); //5,表示行下标为1的一维数组里有多少个数组元素
// 二维数组元素访问
System.out.println(a[0][0]); //1
System.out.println(a[2][2]); //8
// 元素修改
a[2][1] = 100;
System.out.println(a[2][1]);
// 二维数组遍历
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(" " + a[i][j]);
}
System.out.println();
}
排序 二分法查找(先用sort排序) 数组扩容(扩展知识,不常用,但学来也不亏,涨涨见识) 原理:建立一个大容量的数组,然后将要拷贝的数组拷贝到大数组里。缺点:数组效率很低,因为拷贝数组java数组初始化,所以要先确定大数组的长度java数组初始化,费事。(没有必要情况就不要用)
//拷贝源(从这个数组中拷贝)
int[] copy = {1, 10, 11, 13, 14};
//拷贝目标(拷贝到这个目标数组上)
int[] mub =new int[20];//动态初始化一个长度为20的数组,每一个元素默认值0
// 调用JDK System类中的arraycopy方法,来完成数相的接贝
System.arraycopy(copy, 1, mub, 3, 2);
//遍历目标数组
for (int i =0; i < mub.length; i++){
System.out.println(dest[i]);
}