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

hof*_*ofs 17 java android textview android-edittext

例如,在下面的代码中a,b并且c是相同的.

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();
Run Code Online (Sandbox Code Playgroud)

有什么区别length()getText().length()getText().toString().length()

Com*_*are 20

.length()并且它们当前的实现getText().length()是相同的.

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


Tac*_*ter 6

这是性能问题. length将完全相同getText,length它只是节省您键入getText().从类TextViewEditText扩展:

public CharSequence getText() {
    return mText;
}

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

至于toString,它是一样的,但是,你做的任何转换(CharSequence=> String)都会花费你一点点的性能(很少你可能不会注意到它).

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

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


Vik*_*yap 5

  1. length(): - length()function是一个继承的方法,EditView它继承的方法TextView返回由此管理的文本的字符长度EditView.因此,它将返回用户放入EditViewContorl 的文本长度.

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

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