• 六、从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中字符串数组不是字符串。

  • 相关阅读:
    合并字符串中的多个空格
    IfcSpecularRoughness
    IfcSpecularExponent
    IfcPresentableText
    IfcFontWeight
    IfcFontVariant
    uwb ifc模型定位測試
    IfcFontStyle
    IfcGeometricModelResource
    qt6安装
  • 原文地址:https://www.cnblogs.com/seaspring/p/5268283.html
Copyright © 2020-2023  润新知