Java中的length字段和length()方法-阿里云开发者社区

开发者社区> 沉默术士> 正文

Java中的length字段和length()方法

简介:
+关注继续查看
首先,你能快速回答下面的问题吗?
  如果没有IDE(集成开发环境)的自动补全功能,如何获取数组和字符串的长度?
  我问了不同等级的开发者(初级和中级)同样的问题,他们很难准确而确信地给出答案。虽然IDE提供的代码自动补全功能十分方便,但也带来了“表面理解(surface understanding)”的问题。在本文中,我会解释一些和Java数组的关键概念。
  上述问题的答案如下:
int[] arr = new int[3];
System.out.println(arr.length);//数组的length属性
String str = "abc";
System.out.println(str.length());//字符串的length()方法
  现在的问题是,为什么数组有length属性而字符串没有?或者,为什么字符串有length()方法而数组没有?
  问题1. 为什么数组有length属性?
  首先,数组是一个容器对象,它保存了一定数量的某一类型的值。当一个数组被创建出来后,它的长度就不会再改变了。数组的长度可视作一个final实例变量。因此,长度可被认为是数组定义的一个属性。
  创建数组有两种方式:1)数组创建表达式;2)数组初始化。一旦数组被创建,它的长度就固定了。
  下面的数组声明虽然只指明了数组中第一维的长度,但它是合法的。
int[][] arr = new int[3][];
  数组的初始化创建了一个数组并为其中的每个元素赋上初始值,它是由一个被“{”和“}”包围的用逗号分隔的若干表达式构成,示例如下:
int[] arr = {1, 2, 3};
  问题2. 为什么没有一个像“String”一样定义的“Array"类?
  因为数组是一个对象,所以下面的代码是合法的。
Object obj = new int[10];
  数组包含了Object类中的所有成员(除了clone)。为什么不能像定义一个类那样定义数组呢?我们找不到一个Array.java文件。一种比较简单的解释是:它们被掩藏了。你可考虑一下这个问题:如果有一个数组类,那么它该是什么样的?我们还是需要一个数组来保存数组数据,是不是?因此,定义一个这样的类似很不明智的。
  事实上,我们可以通过下面的方式来获取一个数组类:
int[] arr = new int[3];
System.out.println(arr.getClass());
  输出的结果是:
class[]
  ”class[]“是”int类型数组“类对象的运行时类型签名。
  问题3. 为什么字符串有length()方法?
  字符串中保存字符数据的数据结构是一个字符数组。因此,没有必要定义一个在实际应用中不必须的字段。与C语言不通,在Java中,一个字符数组并不是一个字符串。

最新内容请见作者的GitHub页:http://qaseven.github.io/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10089 0
使用javascript获取wx.config内部字段解决微信分享
背景 在微信分享开发的时候我们通常的流程是 微信分享 wx.config({ appId: '', timestamp...
957 0
jsp页面中JSTL/EL标签引用java后台静态static字段的方法总结
为什么使用该功能? 项目中的每个页面都包含产品名称、Logo、版本等信息,我希望修改一处,其它所有的全部跟着变。 有同学会说那就都引用一个页面“”就Ok了;但是我希望这些信息都是可以通过后台代码修改的,修改后保存到数据库和一个静态类中;其实后台直接读写这个引用 的页面或者保存到属性文件(properties)中也是可以的,我觉得还是存到数据库中好一些。
540 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13892 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11893 0
Java8 stream 中利用 groupingBy 进行多字段分组求和
Java8 stream 中利用 groupingBy 进行多字段分组求和
1855 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7365 0
+关注
5518
文章
253
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载