• Java中lenth、lenth()和size()的区别是什么?


    今天做面试题遇到一道坑爹的题,某东的原题:

    String str = "";

    System.out.print(str.split(",").length());

    问输出什么,总共三个选项:

    A)0

    B)1

    C)编译错误

    我知道他想考什么,当空字符串调用split,长度为1嘛,肯定想骗我们选A,然后我果断选C,结果答案是B!!!??

    如果不知道split方法是什么可以参考我的上篇博客,请猛戳我!~

    WTF!?

    难道是我傻了么?数组怎么能够调用length()方法呢?我开始怀疑人生了,然后打开我的IDEA试了一下:

    package packageTest;
    
    public class Foo {
    
        public static void main(String[] args) {
            String s="";
            System.out.println(s.split(",").length());
        }
    }

    果然报错了,看来并不是我傻了,而是出题人傻了,很久之前我也被length坑过

    稍微总结一下:lenth, lenth()和size()的区别吧!

    1、length属性

    lenth是数组的专属变量,是public static final类型的

    2、length()方法

    字符串查看长度则必须调用length(),有图有真相:

    可以看到,返回了一个value.length

    value是一个字符型数组,所以说length是数组的专用变量,length()底层还是返回的是length

    我们看一下注释:

    为什么字符串量长度用length()而不用Size()呢?

    我们查一下海词:

    length表示的是二维的多少或者距离,String正好就是一串字符,本身也是二维的东西,所以不存在空间的问题。因此使用length求长度更为合适。

    3、Size()

    我们再查一下海词:

    可见,size表示的是一种空间的大小而非长度,空间是三维的东西,所以容器都可以使用size()方法求里面对象的多少

    网上还有一种说法,使用泛型的集合都可以用size方法,为啥呢?

    我们知道泛型就是限定往这个容器中装的类型,比如我只能往桶里装包子,我想知道究竟有几个包子,你说应该用length方法求桶的长度对呢还是求桶里边有多少个包子对呢?

    常见容器有List/Set/Map,如果不懂容器,可以看一下马士兵老师的视频,讲得通俗易懂,安利了!

    总结:

    求数组长度:使用length,length是数组的属性不是方法.

    求字符串长度,用length(),是方法,返回值是char数组的长度

    求容器的大小,用size()。一定要记住了!!!

  • 相关阅读:
    MongoDB数据类型
    Redis数据类型
    RHEL7 CentOS7 检查查看精简指令
    Linux命令:查看登录用户
    JavaScript错误之:Uncaught ReferenceError: $ is not defined
    Linux下因为系统编码问题造成乱码的解决办法
    Linux系统下的程序开发之:命名规范
    优化php代码
    Git工具:Widows下的使用(提交到Github)
    MongoDB
  • 原文地址:https://www.cnblogs.com/taobean/p/12364280.html
Copyright © 2020-2023  润新知