六、从length和length()方法开始
首先你可以快速回答下面问题吗。
当没有任何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()方法开始的更多相关文章
- java中,length,length(),size()区别
length——数组的属性: length()——String的方法: size()——集合的方法:
- 灵魂拷问:Java如何获取数组和字符串的长度?length还是length()?
限时 1 秒钟给出答案,来来来,听我口令:"Java 如何获取数组和字符串的长度?length 还是 length()?" 在逛 programcreek 的时候,我发现了上面这个 ...
- 由length、length()、size()引发的挖掘
在java中可能会经常用到这几个属性或者方法, 那么今天就来仔细研究一下 length——数组的属性: length()——String的方法: size()——集合的方法: 1.数组.length属 ...
- 【JAVA】java中的length和length()
参考链接: 你注意到Java中的length和length()了吗?外加一个size() java中的求长度length有时有小括号,有时没有小括号,到底什么时候该加小括号呢? 总结: Java中St ...
- 关于length、length()、size()
length:属性,数组的属性. length(): String的方法,方法体里面是 return value.length; size():集合如list.set.map的方法,返回元素个数.
- 分析Java中的length和length()
在不适用任何带有自动补全功能的IDE的情况下,我们怎么获取一个数组的长度?如何获取字符串的长度? 这里我们先举用实例去分析一下:int[] arr=new int[3]:System.out.prin ...
- 关于Java中length、length()、size()的区别
length——数组的属性: length()——String的方法: size()——集合/映射的方法:(List.Set.Map) 转载自https://blog.csdn.net/qq_3323 ...
- length、length()、size()区别 List与String相互转换
字符串 数组 List对象 定义 String str = ""; String[] s = new String[5]; char[] s; List<String&g ...
- JS数组 了解成员数量(数组属性length) myarr.length
了解成员数量(数组属性length) 如果我们想知道数组的大小,只需引用数组的一个属性length.Length属性表示数组的长度,即数组中元素的个数. 语法: myarray.length; //获 ...
随机推荐
- Android的startActivityForResult不起作用
之前startActivityForResult一直用的好好的,今天发现怎么也不起作用.检查后发现有两点影响了. 1.android:launchMode="singleTask" ...
- OpenERP的短信(SMS)接口
今天测试了一下OpenERP的短信(SMS)接口. 在OpenERP的Partner界面上,WebClient的右边的工具条有个“send sms”的按钮.OpenERP中发短信用的是短信的Web接口 ...
- venus之hello world
Venus Service Framework提供服务器端开发SDK以及客户端SDK.它们之间采用Venus自定义的私有协议.encoder.decoder采用多种序列化方式,客户端根据自己的语言选择 ...
- Java典型应用彻查1000例:图形与网络游戏开发 PDF 扫描版[68M]
<Java典型应用彻查1000例·图形与网络游戏开发>实例丰富,编排合理,可以让有初级Java基础的读者,从陌生到完全熟练地设计网络游戏,进而掌握3D立体绘图方法,适合作为Java网络游戏 ...
- 【laravel5.4】引入自定义类库+卸载已有的自定义库(以引入钉钉应用为例)composer dumpautoload -o
本文之前,首先感谢: Azeroth_Yang 传送门:https://blog.csdn.net/zwrj1130/article/details/73467320 强烈建议引入的类 都是含有命名 ...
- laravel5.4中{{$name}} 和 {{!! $name !!}} 的区别:后者原生输出。前者转义
- HDUOJ----(2612)Find a way
Find a way Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDUOJ----(1084)What Is Your Grade?
关键是自己没有读懂题目而已,不过还好,终于给做出来了...... What Is Your Grade? Time Limit: 2000/1000 MS (Java/Others) Memor ...
- mermaid 语法
a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2p ...
- Oracle用同义词可以不使用用户名.表名查询表 Oracle 创建synonym
一般在PL/SQL下,Oracle 用户查询其他用户的表一定要使用user.table格式才能查询,每次用户名.表名嫌麻烦的话.可以使用同义词,意思将user.table访问格式改成table格式即可 ...