首先你可以快速回答下面问题吗。
当没有任何IDE的情况下,如何得到一个数组的长度,如何得到一个String的长度。
我问这个了很对不同水平的开发者:初级的中级的。他们不能快速正确的回答这个问题。当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

这个问题变成了为什么数组有长度属性但是字符串没有?或者为什么String有字符串方法而数组没有。
1. 问题一、为什么数组有length属性
首先,数组是个对象的容器保存这固定数量的一个类型的值。数组被创建后,它的长度将不能改变的。数组的长度是个可用的不可改变的成员变量。因此长度被当做一个数组的预定于的属性。
数组有两种方法被创建:
1) 数组可以通过表达式创建。
2) 数组初始器。
当它被创建时候,这个长度是被指定的。
一个数组创建表达式可以像上面例子的代码被使用。它指定的成员的类型。数组的层数,和至少一层数组的长度。
下面的声明仍然是合法的,当它知名了一层的长度。


int[][] arr = new int[3][];

数组初始化起创建了一个数组和提供所有的构造它的初始值。它被书写为逗号分隔的字表达式列表,被{}括起来。
如下:


int[] arr = {1,2,3};

问题2:为什么没有一个叫Array的类类似“String”定义。
如果array是个对象的话,那么下面代码是合法的:


Object obj = new int[10];

一个数组包含了所有从Object类(除了克隆)的类的成员。为什么没有一个叫做数组的类那? 我们也不能发现一个Array.java的文件。粗糙的解释是它们对我们隐藏了。你可以思考一个问题,如果有一个叫数组的类,它看起来应该什么样子。它将仍然需要一个数组去保存所有的数组数据,对不对?因此定义一个如此的类不是一个好主意。
实际上,我们可以得到一个数组的类通过下面的代码。


int[] arr = new int[3];
System.out.println(arr.getClass());

输出:


class [I

class [I 代表这运行运行时候class对象的签名。一个数组由int类型组成。
问题3、为什么String有length()方法。
字符串后面的数据是一个字符数组。对每个程序来讲,它都不需要定义一个属性。不像C,在Java中字符串数组不是字符串。

六、从length和length()方法开始的更多相关文章

  1. java中,length,length(),size()区别

    length——数组的属性: length()——String的方法: size()——集合的方法:

  2. 灵魂拷问:Java如何获取数组和字符串的长度?length还是length()?

    限时 1 秒钟给出答案,来来来,听我口令:"Java 如何获取数组和字符串的长度?length 还是 length()?" 在逛 programcreek 的时候,我发现了上面这个 ...

  3. 由length、length()、size()引发的挖掘

    在java中可能会经常用到这几个属性或者方法, 那么今天就来仔细研究一下 length——数组的属性: length()——String的方法: size()——集合的方法: 1.数组.length属 ...

  4. 【JAVA】java中的length和length()

    参考链接: 你注意到Java中的length和length()了吗?外加一个size() java中的求长度length有时有小括号,有时没有小括号,到底什么时候该加小括号呢? 总结: Java中St ...

  5. 关于length、length()、size()

    length:属性,数组的属性. length(): String的方法,方法体里面是  return value.length; size():集合如list.set.map的方法,返回元素个数.

  6. 分析Java中的length和length()

    在不适用任何带有自动补全功能的IDE的情况下,我们怎么获取一个数组的长度?如何获取字符串的长度? 这里我们先举用实例去分析一下:int[] arr=new int[3]:System.out.prin ...

  7. 关于Java中length、length()、size()的区别

    length——数组的属性: length()——String的方法: size()——集合/映射的方法:(List.Set.Map) 转载自https://blog.csdn.net/qq_3323 ...

  8. length、length()、size()区别 List与String相互转换

      字符串 数组 List对象 定义 String str = ""; String[] s = new String[5]; char[] s; List<String&g ...

  9. JS数组 了解成员数量(数组属性length) myarr.length

    了解成员数量(数组属性length) 如果我们想知道数组的大小,只需引用数组的一个属性length.Length属性表示数组的长度,即数组中元素的个数. 语法: myarray.length; //获 ...

随机推荐

  1. gulp 常用插件汇总

    2017-07-26更新:图片压缩插件使用gulp-smushit,gulp-smushit压缩率比较大,gulp-imagemin 图片压缩插件压缩率不明显. 见下图压缩率: 1.gulp安装 参照 ...

  2. linux bash Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    在linux下配置shell参数说明 前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid ...

  3. OpenERP7.0中日期的问题

    在OpenERP7.0中载入中文语言后,输入某些单据,一些细化到时间的字段输入时会报错,说是日期格式不正确. 解决办法是进入[设置]-[翻译]-[语言]菜单,把时间格式中的值 %I:%M:%S %p ...

  4. 混合用法模式 __name__和__main__

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #混合用法模式 __name__和__main__ #可把文件作为模块导入,并以独立式程序的形式运行,每个模块 ...

  5. 为什么WEB-INF外的jsp无法根据cookie享受国际化

    243行走WEB-INF外则获取为空,走springmvc则可以获取到:

  6. Loadrunner脚本编程(1)-大体思路

    http://www.360doc.com/content/10/0806/13/1698198_44076570.shtml 就目前的了解.Loadrunner的脚本语言其实和C没什么区别.他内部的 ...

  7. Chrome 编译错误汇总

    由于各种你懂的原因,訪问google的服务总是出错,先是hosts不工作.代理也不好使,最后最终能够短暂訪问了.我的版本号还是採用svn维护的,直接svn update也不行.试试git吧,一晚上才下 ...

  8. PHP中一些有用的函数

    <?php /** * 加密解密 * * @param string $key * @param string $string * @param string $decrypt * @retur ...

  9. 那些遇到的position-fixed无效事件

    本篇文章由:http://xinpure.com/position-fixed-encountered-an-invalid-event/ 第一次无效事件 事件主角: transform 应用环境: ...

  10. 让你的APP和你的服务器畅快通讯

    做安卓开发有很多时候都是要和web交互的,我们很难制作本地应用,这次把小弟整出来的安卓和服务器通讯贡献出来,希望能帮到需要的朋友,同时也是加深印象. 我们先来搭建安卓客户端,首先写好布局文件: 1.布 ...