• Java的length&length()------简单易懂


      大家都习惯了使用IDE自动补全了,有些语法也就模模糊糊。例如length&length(),你是否仍然感觉他它俩一样吗?

      请你把我给的这两个算法题打出来:

    给你一个整数数组 nums 。
    
    如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。
    
    返回好数对的数目。
    
     
    
    示例 1:
    
    输入:nums = [1,2,3,1,1,3]
    输出:4
    解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始
    示例 2:
    
    输入:nums = [1,1,1,1]
    输出:6
    解释:数组中的每组数字都是好数对
    示例 3:
    
    输入:nums = [1,2,3]
    输出:0
     
    
    提示:
    
    1 <= nums.length <= 100
    1 <= nums[i] <= 100
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/number-of-good-pairs
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    View Code
    class Solution {
        public int numIdenticalPairs(int[] nums) {
            int res=0;
            for(int i = 0; i < nums.length; i++){
                for(int j = i + 1; j < nums.length; j++){
                    if(nums[i] == nums[j])
                    ++res;
                    
                }
            }
            return res;
        }
    }
    View Code
    给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。
    
    示例 1:
    
    输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
    输出: true
    示例 2:
    
    输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
    输出: false
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/interleaving-string
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    View Code
    class Solution {
        public boolean isInterleave(String s1, String s2, String s3) {
            int n = s1.length(), m = s2.length(), t = s3.length();
    
            if (n + m != t) {
                return false;
            }
    
            boolean[][] f = new boolean[n + 1][m + 1];
    
            f[0][0] = true;
            for (int i = 0; i <= n; ++i) {
                for (int j = 0; j <= m; ++j) {
                    int p = i + j - 1;
                    if (i > 0) {
                        f[i][j] = f[i][j] || (f[i - 1][j] && s1.charAt(i - 1) == s3.charAt(p));
                    }
                    if (j > 0) {
                        f[i][j] = f[i][j] || (f[i][j - 1] && s2.charAt(j - 1) == s3.charAt(p));
                    }
                }
            }
    
            return f[n][m];
        }
    }
    View Code

    是否感觉到在LeetCode编程,不知道应该选哪一个length&length()?

    那我们来一个简单的又易于理解的:

    int[] arr = new int[5];
    System.out.println(arr.length);//length for array
     
    String str = "wuroc";
    System.out.println(str.length());//length() for string

    可以简单的看出,数组使用length。String类型使用length();

    由此可以引出为什么String类没有length,数组没有length()?

    Q1.Why array have length property?

    数组的定义:数组只是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。---《Thinking In Java》

    首先,数组是一个容器对象,其中包含固定数量的单一类型的值。创建数组后,其长度永不更改[1]。数组的长度可用作最终实例变量的长度。因此,长度可以视为数组的定义属性。

    数组可以通过两种方法创建:

    1)数组创建表达式

    int[] a;

    2)数组初始化程序。创建后,将指定大小。

    int[] a = new int[rand.nextInt(20)];

    上面的示例中使用了一个数组创建表达式。它指定元素类型,嵌套数组的级别数以及至少一个嵌套级别的数组长度。

    该声明也是合法的,因为它指定了嵌套级别之一。

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

    数组初始化器创建一个数组,并为其所有组件提供初始值。它以逗号分隔的表达式列表形式编写,并用大括号{}括起来。

    int[] a = {w,u,r,o,c}

    Q2.为什么没有定义类似于“字符串”的类“数组”?

    Object obj = new int[10];

    数组包含从Object类(克隆除外)继承的所有成员。为什么没有数组的类定义?

    我们找不到Array.java文件。粗略的解释是它们对我们隐藏了。但String有类。

    您可以考虑这个问题-如果有一个Array类,它将是什么样?它仍然需要一个数组来保存数组数据,对吗?

    因此,定义这样的类不是一个好主意。

    实际上,我们可以使用以下代码获取数组的类:

    int[] a = new int[3];
    System.out.println(arr.getClass());
    class [I
    Output

    class[I]代表类对象“组件类型为int的数组”的运行时类型签名。

    Q3.为什么String具有length()方法?

    字符串的备份数据结构是一个char数组。无需定义并非每个应用程序都必需的字段。

    与C不同,字符数组不是Java中的字符串。

    String类有很多方法,方法都要带有()。所以我们的所有类的调用方法时,就需要用 .length();

    当我们定义时,就可以创建一个String引用:

    String s = “wuroc”;

    也可以直接使用”new“:

    String  s = new String("WuRoc");

    并且在API1.8中:length()方法的含义是:

  • 相关阅读:
    VS2012 打包部署程序
    请求筛选模块被配置为拒绝包含 hiddenSegment 节的 URL 中的路径
    “远程服务器返回错误: (404) 未找到”的正确解决方法
    23.IDEA 运行junit单元测试方法
    Java单元测试之JUnit篇
    22.IntelliJ IDEA 切换 project
    21. 【intellij idea】Project Structure 讲解
    一个多maven项目聚合的实例
    解决Maven项目相互依赖/循环依赖/双向依赖的问题
    20. idea刷新项目、清除项目缓存
  • 原文地址:https://www.cnblogs.com/WLCYSYS/p/13341163.html
Copyright © 2020-2023  润新知