本文由广州疯狂软件java培训分享:
首先,你能快速回答以下问题吗?
没有任何IDE的代码能自动完成,如何获取数组的长度?以及如何获取一个字符串的长度?
我问不同水平(入门和中级)的开发人员这个问题。他们都不能正确或自信地回答这个问题。虽然IDE提供了方便的代码来自动完成,它也带来了“表面理解”的问题。在这篇文章中,我将解释有关Java数组的一些关键概念。
答案:
int[] arr = new int[3];
System.out.println(arr.length);//length for array
String str = "abc";
System.out.println(str.length());//length() for string
现在的问题是,为什么数组有长度这个属性,但字符串就没有?或者为什么字符串有length()方法,而数组没有?
Q1.为什么数组有length属性?
首先,一个数组是包含单一个数据类型的一组固定长度的值的容器对象。数组被创建后,其长度不会改变[1]。数组的长度可作为恒定不变的final实例变量的长度。因此,长度可以被看作是一个数组的定义属性。
一个数组可以通过两种方法来创建:1)数组创建表??达式2)数组初始化器。当数组一被创建,其数组长度已被指定。
上面的例子就是用数组创建表??达式创建的。它指定了数组元素类型、数组的维度,以及嵌套数组中至少一个维度的数组长度。
这个声明也是合法的,因为它指定嵌套中一个维度的长度。
int[][] arr = new int[3][];
数组初始器创建一个数组,并指定其所有组件的初始值。可以用逗号分隔的列表并用大括号{}括起来的表达式来初始化。
举个例子来说,
int[] arr = {1,2,3};
Q2.为什么没有一个类似于“String”的类来定义一个名为“Array”的类?
由于数组是一个对象,下面的代码是合法的。
Object obj = new int[10];
一个数组包含所有成员继承Object类(克隆除外)。为什么没有一个数组的类定义?我们无法找到一个Array.java文件。粗略的解释是,这个类隐藏了,我们不可见。你可以想想这个问题 - 如果有这么一个Array类,它会是什么样的呢?它仍然需要一个数组来保存数组数据,对不对?因此,定义这么一个类不是个好主意。
实际上,我们可以通过使用下面的代码得到的数组类:
int[] arr = new int[3];
System.out.println(arr.getClass());
Output:
class [I
"class [I"代表的是int数组对象运行时的签名
Q3.为什么字符串有length()方法?
一个字符串的备份数据结构是一个char数组。没有必要定义一个字段,对每一个应用程序也是没必要的。不像C语言,一个字符数组不是在Java语言中的String。
疯狂软件教育中心依托开发团队的强大技术实力,把企业最新技术融入实训课程,打造金牌的品质,才能给予学员黄金的未来,疯狂软件凭借过硬的技术实力与丰富的项目开发经验,赢得了社会的肯定。疯狂软件Java培训师资力量强大,课程内容深入,为学员高薪就业做了很好的铺垫,拥有丰富就业指导经验的就业团队也成为了学员高薪就业的先天优势。地址:广州天河区车陂沣宏大厦3楼。