黑马程序员技术交流社区
标题:
谁能告诉我s.length()方法内部是什么样子的,为什么样区别于s.length
[打印本页]
作者:
Dijkstra
时间:
2014-4-18 12:27
标题:
谁能告诉我s.length()方法内部是什么样子的,为什么样区别于s.length
谁能告诉我s.length()方法内部是什么样子的,为什么样区别于s.length
这个问题纠结欧文很久了也没想明白
作者:
清风有意
时间:
2014-4-18 12:43
String 类的源代码:
private final char value[];
public int length() {
return value.length;
}
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
复制代码
比如String s=new String("abc");
original就是"abc",original这个对象在常量池中就已经建立了。而original.value也被初始化。
作者:
呆呆沙师妹
时间:
2014-4-18 12:49
查看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”。
作者:
sanguodouble1
时间:
2014-4-18 13:40
很简单
length()方法是用于字符串的
而length是数组的一个属性,作用于数组的,
length()方法内部,其实还是调用的字符串数组的length属性
作者:
Sniper_qiu
时间:
2014-4-18 13:57
length是属性,一般集合类对象拥有的属性,取得集合的大小。
例如:数组.length就是取得数组的长度。
length()是方法,一般字符串类对象有该方法,也是取得字符串长度。
例如:字符串.length();
作者:
Peach2014
时间:
2014-4-18 14:24
请参考以下代码,简单的给你说一下,你应该就可以明白了;
带“()”的length(),表示的是对象的一个函数方法;
而length,表示的是对象的一个属性;
他们可以说具有相同的效果,但是根据对象的不同,使用的方法不同,有的对象中定义了length()方法,所以你可以调用,比如说“String”被java封装成了对象;有些对象中只定义了length属性,所以只能使用length来获得程度,不如说数组
int[] i = {1,2,3,4};
int j =i.length;
这两种方法都是用来获取长度的,就是看在对象中是如何定义的!如果按照一下代码,两种方法是一样的。
class Simple
{
Simple(int len)
{
this.length = len;
}
public int length;
public int length()
{
return length;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2