A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

谁能告诉我s.length()方法内部是什么样子的,为什么样区别于s.length
这个问题纠结欧文很久了也没想明白

5 个回复

倒序浏览
String 类的源代码:
  1. private final char value[];
  2. public int length() {
  3.         return value.length;
  4.     }
  5.     public String(String original) {
  6.         this.value = original.value;
  7.         this.hash = original.hash;
  8.     }
复制代码

比如String s=new String("abc");
original就是"abc",original这个对象在常量池中就已经建立了。而original.value也被初始化。
回复 使用道具 举报
查看String.java的原文档可看到:
在String.java内部创建了private final char value[];
调用s.length()方法实际返回的是value这个数组的长度。
public int length() {
        return value.length;
    }

s.length这里s是字符串数组的引用变量吧?
数组都是Object类的一个子类的实例,可以把数组赋给一个Object变量,在类的层次结构中有个Array的子类(java.lang.reflect.Array),有个实例变量“length”。
回复 使用道具 举报
很简单
length()方法是用于字符串的
而length是数组的一个属性,作用于数组的,
length()方法内部,其实还是调用的字符串数组的length属性
回复 使用道具 举报
length是属性,一般集合类对象拥有的属性,取得集合的大小。
例如:数组.length就是取得数组的长度。

length()是方法,一般字符串类对象有该方法,也是取得字符串长度。
例如:字符串.length();
回复 使用道具 举报
请参考以下代码,简单的给你说一下,你应该就可以明白了;
带“()”的length(),表示的是对象的一个函数方法;
而length,表示的是对象的一个属性;
他们可以说具有相同的效果,但是根据对象的不同,使用的方法不同,有的对象中定义了length()方法,所以你可以调用,比如说“String”被java封装成了对象;有些对象中只定义了length属性,所以只能使用length来获得程度,不如说数组
int[] i = {1,2,3,4};
int j =i.length;

这两种方法都是用来获取长度的,就是看在对象中是如何定义的!如果按照一下代码,两种方法是一样的。

  1. class Simple
  2. {
  3.         Simple(int len)
  4.         {
  5.                 this.length = len;
  6.         }
  7.         public int length;
  8.         public int length()
  9.         {
  10.                 return length;
  11.         }
  12. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马