我读过上一篇文章.任何人都可以说CharSequence和String 之间的确切区别是什么,除了String实现的事实CharSequence和那String是一个字符序列?例如:
CharSequence obj = "hello";
String str = "hello";
System.out.println("output is : " + obj + " " + str);
Run Code Online (Sandbox Code Playgroud)
当"hello"分配给obj和再次分配时会发生什么str?
Android提供了多种接口所有文字和字符串相关的:
Spanned,SpannedString,Spannable,SpannableString和CharSequence.
我已经在各种场景中使用了上述所有内容,通常是在使用Html.fromHtml()内部显示可链接文本之后TextView,以便为其应用一些样式.
我试图从Android的官方文档中了解这些接口的用途/用法并且因为它很混乱而失败了.这些接口的目的是什么?在哪些情况下使用它们最常见?在哪些情况下最好避免使用它们?使用其中任何一个时,是否有任何明显的性能影响?
如果有人能提供一个体面的解释,我将不胜感激.
我正在为包设计一个公共接口(API).我想知道,我应该CharSequence普遍使用而不是String.(我主要谈的是公共接口).
这样做有什么缺点吗?这被认为是一种好习惯吗?
如何将它用于类似标识符的目的(当值与基于散列的容器中的集合匹配时)?
A String 是-a CharSequence.Java库中的许多方法都接受,CharSequence因此它们可以更普遍地运行.有些classe有一个String方法(例如Writer.write(String)),并且还Appendable使用等效CharSequence方法(例如Writer.append(CharSequence))实现.
如果我正在编写一个委托给这样一个类的类,并且需要一些文本输入,我可以选择输入为a String或a CharSequence.通过为客户提供更多选项,选择后者可以使课程更加灵活.但我没有看到太多的代码这样做:文本参数几乎总是一个String而不是一个CharSequence.是否有使用的缺点CharSequence?是否有性能受损?或者只是程序员的intertia或无知导致使用String而不是CharSequence?
相比
class XMLWriter {
private final Writer writer;
// more stuff here
public void writeComment(String text) {
writer.write("<!-- ");
writer.write(text);
writer.write(" -->");
}
}
Run Code Online (Sandbox Code Playgroud)
同
class XMLWriter {
private final Writer writer;
// more stuff here
public void writeComment(CharSequence text) {
writer.write("<!-- ");
writer.append(text);
writer.write(" -->"); …Run Code Online (Sandbox Code Playgroud) 内部实现上StringBuffer与StringBuilder Vs StringTokenizer的区别是什么.何时使用这些.请等待答案.
我也正在浏览源代码.
这是这个线程的延续:
在strings.xml中本地化字符串会产生NullPointerException
在经历并实现该线程中提供的解决方案之后出现此问题.提供的解决方案适用于以下情况:
loading = (TextView)findViewById(R.id.loading);
loading.setText(R.string.loading);
Run Code Online (Sandbox Code Playgroud)
这不适用于以下情况:
exodus.add(new Question(R.string.a, R.string.b, R.string.c, R.string.d, 0, R.string.e, -1, R.string.f));
Run Code Online (Sandbox Code Playgroud)
错误是The constructor Question(int, int, int, int, int, int, int, int) is undefined.问题的构造函数应该是Question(String, String, String, String, int, String, int, String)这些:
R.string.X
Run Code Online (Sandbox Code Playgroud)
以int而不是字符串返回.
我该怎么做才能解决这个问题?而且,如果你知道,为什么这个方法用于设置TextViews的文本而不是对象中的参数?
我有一个将文本放入arrayList的类.然后它将所有变量变成CharSequences,当我尝试将变量比较为一个String,例如=="test"; 它在这里不起作用是我用来获取变量的代码
class Item {
String descs;
public Item (String descs){
this.descs = descs;
}
public CharSequence getDescs() {
return descs;
}
}
Run Code Online (Sandbox Code Playgroud)
这是将其与String进行比较的代码
if(p.getDescs().toString() == "trash"){
descsView.setVisibility(View.GONE);
}
else{
descsView.setText(p.getDescs());
}
Run Code Online (Sandbox Code Playgroud)
我知道p.getDescs()等于垃圾,因为当它设置descsView的文本时,它被设置为垃圾.为什么第一个if语句不起作用?
我有包含零的字符串,不幸的是有很多空格.我想写一个方法,它将摆脱所有的空格,并返回只有1和0的字符串.
我怎样才能做到这一点?
String example= new String("1 011 01 1");
String shouldReturnStringWithoutWhiteSpaces(String given){
String cleanString
//some action which will "transform "1 011 01 1" into "1011011"
return cleanString;
}
Run Code Online (Sandbox Code Playgroud)