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

2022-09-02 12:27:32

例如,在下面的代码中,和 是相等的。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()


答案 1

.length()并且在当前实现中是相同的。getText().length()

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


答案 2

这是一个性能问题。 将执行与完全相同的功能,它只是使您免于键入 。从扩展的类:lengthgetTextlengthgetText()TextViewEditText

public CharSequence getText() {
    return mText;
}

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

至于 ,这是相同的,但是,您进行的任何转换(=>)都会花费您一点点性能(如此之少,您可能不会注意到它)。toStringCharSequenceString

另外,当您转换内容时,您必须注意空指针异常,也许不是在这种情况下,而是一般来说。

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


推荐