农业企业网站建设,全球速卖通企业类型,无锡网站建设公司地址,1688网站建设java面试题24 关于Java中的数组#xff0c;下面的一些描述#xff0c;哪些描述是准确的#xff1a;#xff08; #xff09;
A 数组是一个对象#xff0c;不同类型的数组具有不同的类
B 数组长度是可以动态调整的
C 数组是一个连续的存储结构
D:一个固定长度的…java面试题24 关于Java中的数组下面的一些描述哪些描述是准确的
A 数组是一个对象不同类型的数组具有不同的类
B 数组长度是可以动态调整的
C 数组是一个连续的存储结构
D:一个固定长度的数组可类似这样定义: int array[100]
E两个数组用equals方法比较时会逐个便利其中的元素对每个元素进行比较
F可以二维数组且可以有多维数组都是在Java中合法的
懵逼树上懵逼果懵逼树前你和我 数组的基本概念
如果说现在要求你定义100个整型变量那么如果按照之前的做法可能现在定义的的结构如下
int i1, i2, i3, ... i100;
但是这个时候如果按照此类方式定义就会非常麻烦因为这些变量彼此之间没有任何的关联也就是说如果现在突然再有一个要求要求你输出这100个变量的内容意味着你要编写System.out.println()语句100次。
其实所谓的数组指的就是一组相关类型的变量集合并且这些变量可以按照统一的方式进行操作。数组本身属于引用数据类型那么既然是引用数据类型这里面实际又会牵扯到内存分配而数组的定义语法有如下两类。 数组动态初始化 声明并开辟数组 数据类型 [] 数组名称 new 数据类型[长度]; 数据类型 [] 数组名称 new 数据类型[长度]; 分布进行数组空间开辟实例化 | Tables | Are | | ------------- |:-------------? | 声明数组 | 数组类型 数组名称[] null; | | | 数组类型 [] 数组名称 null; | | 开辟数组空间 | 数组名称 new 数组类型[长度]; |
那么当数组开辟空间之后就可以采用如下的方式的操作 数组的访问通过索引完成即“数组名称[索引]”但是需要注意的是数组的索引从0开始所以索引的范围就是0 ~ 数组长度-1例如开辟了3个空间的数组所以可以使用的索引是0,1,2如果此时访问的时候超过了数组的索引范围会产生java.lang.ArrayIndexOutOfBoundsException 异常信息 当我们数组采用动态初始化开辟空间后数组里面的每一个元素都是该数组对应数据类型的默认值 数组本身是一个有序的集合操作所以对于数组的内容操作往往会采用循环的模式完成数组是一个有限的数据集合所以应该使用 for 循环。 在 Java 中提供有一种动态取得数组长度的方式数组名称.length
范例 定义一个int型数组
public class ArrayDemo {public static void main(String args[]) {int data[] new int[3]; /*开辟了一个长度为3的数组*/data[0] 10; // 第一个元素data[1] 20; // 第二个元素data[2] 30; // 第三个元素for(int x 0; x data.length; x) {System.out.println(data[x]); //通过循环控制索引}}
}
数组本身除了声明并开辟空间之外还有另外一种开辟模式。
范例 采用分步的模式开辟数组空间
public class ArrayDemo {public static void main(String args[]) {int data[] null;data new int[3]; /*开辟了一个长度为3的数组*/data[0] 10; // 第一个元素data[1] 20; // 第二个元素data[2] 30; // 第三个元素for(int x 0; x data.length; x) {System.out.println(data[x]); //通过循环控制索引}}
}
但是千万要记住数组属于引用数据类型所以在数组使用之前一定要开辟控件实例化如果使用了没有开辟空间的数组则一定会出现 NullPointerException 异常信息
public class ArrayDemo {public static void main(String args[]) {int data[] null;System.out.println(data[x]);}
}
这一原则和之前讲解的对象是完全相同的。
数组在开发之中一定会使用但是像上面的操作很少。在以后的实际开发之中会更多的使用数组概念而直接使用99%情况下都只是做一个 for 循环输出。 数组引用传递
既然数组属于引用数据类型那么也一定可以发生引用传递。在这之前首先来研究一下数组的空间开辟。
范例 观察一道程序
public class ArrayDemo {public static void main(String args[]) {int data[] null;data new int[3]; //开辟一个长度为3的数组data[0] 10;data[1] 20;data[2] 30;}
} 新建数组变量
那么既然说到了引用数据类型了就一定可以发生引用传递而现在的引用传递的本质也一定是同一块堆内存空间可以被不同的栈内存所指向。
范例 定义一个程序
public class ArrayDemo {public static void main(String args[]) {int data[] null;data new int[3]; //开辟一个长度为3的数组int temp[] null; //声明对象data[0] 10;data[1] 20;data[2] 30;temp data; //int temp[] data;temp[0] 99;for(int i 0; i temp.length; i) {System.out.println(data[i]);}}
} 引用传递分析都是一个套路。同一块堆内存被不同的栈内存所指向。 数组静态初始化
在之前所进行的数组定义都有一个明显特点数组先开辟内存空间而后再使用索引进行内容的设置实际上这种做法都叫做动态初始化而如果希望数组在定义的时候可以同时出现设置内容那么就可以采用静态初始化完成。
数组的静态初始化一共分为以下两种类型 Tables Are 简化格式 数据类型 数组名称 {值, 值,…} 完整格式 数据类型 数组名称 new 数据类型[] {值, 值,…}
范例 采用静态初始化定义数组
public class ArrayDemo {public static void main(String args[]) {int data[] {1, 2, 4, 545, 11, 32, 13131, 4444};for(int i 0; i data.length; i) {System.out.println(data[i]);}}
}
在开发之中对于静态数组的初始化强烈建议使用完整语法模式这样可以轻松地使用匿名数组这一概念。
public class ArrayDemo {public static void main(String args[]) {System.out.println(new int[] {1, 2, 4, 545, 11, 32, 13131, 4444}.length);}
}
以后使用静态方式定义数组的时候一定要写上完整格式。
数组最大的缺陷长度固定。 二维数组
在之前所使用的数组发现只需要一个索引就可以进行访问那么这样的数组实际上非常像一个数据行的概念。
现在痛过一个索引就可以取得唯一的一个记录。所以这样的数组可以简单理解为一维数组而二维数组本质上指的是行列集合也如果要确定某一个数据需要行索引和列索引来进行定位。
如果要想确定一个数据则数据使用的结构是“数组名称[行索引][列索引]”所以这样的结构就是一个表的结构。
那么对二维数组的定义有两种声明形式 数组的动态初始化数据类型 对象数组[][] new 数据类型[行个数][列个数]; 数组的静态初始化数据类型 对象数组[][] new 数据类型[行个数][列个数]{{值, 值,…}, {值, 值,…},…};
数组的数组就是二维数组。
范例 定义一个二维数组
public class ArrayDemo {public static void main(String args[]) {//此时的数组并不是一个等列数组int data[][] new int[][] {{1, 2, 3}, {4, 5}, {6, 7, 8, 9}};//如果在进行输出的时候一定要使用双重循环//外部的循环控制输出的行数而内部的循环控制输出列数for(int i 0; i data.length; i) {for(int j 0; j data[i].length; j) {System.out.print(data[ i ][ j ] data[i][j] 、);}System.out.println();}}
}
由于输出麻烦所以可以忽略了在进行开发之中出现二位数组的几率并不高。 同样的我们看看别人的解析答案最后是
正确答案: A C F
我是歌谣喜欢敲代码无聊刷刷题。不多说了我先去敲代码去。有什么不合理之处欢迎吐槽。
阅读目录置顶)(长期更新计算机领域知识
阅读目录置顶)(长期更新计算机领域知识
阅读目录置顶)(长期科技领域知识
歌谣带你看java面试题