.length()vs .getText()。length()vs .getText()。toString()。length()

时间:2016-04-02 15:52:22

标签: java android android-edittext textview

例如,下面的代码abc相等。

EditText editText;
editText = (EditText) findViewById(R.id.edttxt);

editText.setText("1234");

int a, b, c;
a = editText.length();
b = editText.getText().length();
c = editText.getText().toString().length();

length()getText().length()getText().toString().length()之间有何区别?

3 个答案:

答案 0 :(得分:20)

<{> .length()getText().length()their current implementation中相同。

.getText().toString().length()会将CharSequence转换为普通String,然后计算其长度。在许多情况下,我希望返回与其他两个相同的值。但是,如果CharSequence类似于SpannedString,我不能排除存在影响长度计算的某种格式范围(例如,ImageSpan)的可能性。

答案 1 :(得分:6)

这是表现的问题。 lengthgetTextlength完全相同,只会让您免于键入getText()。 来自TextView扩展的EditText课程:

public CharSequence getText() {
    return mText;
}

/**
 * Returns the length, in characters, of the text managed by this TextView
 */
public int length() {
    return mText.length();
}

至于toString,它是相同的,但是,您所做的任何转换(CharSequence =&gt; String)都会让您节省一点性能(所以很少你可能没注意到它。)

此外,当您转换内容时,您必须注意空指针异常,可能不是在这种情况下,但一般来说。

要回答这个问题,请使用length()

答案 2 :(得分:5)

  1. length(): - length()函数是EditView的继承方法,它由TextView继承,返回文本的长度(以字符为单位)由此EditView管理。因此,它会返回用户放入EditView Contorl的文本长度。

  2. getText().length(): - 此声明中length()函数不属于EditView类。实际上,此length()函数属于CharSequence类,因为getText()返回CharSequence个对象。因此,此函数length()将再次返回此序列中字符的数量。

  3. .getText().toString().length(): - here toString()方法将CharSequence对象转换为普通的不可变String对象。所以,这里length()函数属于String类,它也返回String对象的长度