String既然是不可变的,为啥不把length()方法改成length属性可以提供一个final的常量来表示啊。难道仅仅是因为java的封装特性?求高手详解……

解决方案 »

  1.   

        public int length() {
            return count;
        }它确实是用一个变量来表示的
      

  2.   


    String又这个length()方法,来返回 该字符的长度,它实现CharSequence接口CharSequence这个类又抽象length()方法
    其实我也不是很清楚底层的东西
      

  3.   


    源码貌似是这样的,但为啥不能直接提供一个final的length属性呢?
      

  4.   

    它也确实是final的:private final int count;
      

  5.   

    它为什么不是public的?正如3楼所说,length方法是CharSequence接口中的方法,所有实现了该接口的都可以用length,包括StringBuilder,StringBuffer等,而在接口中定义final变量后在实现类就无非更改了。。