==到目前为止,我一直在我的程序中使用运算符来比较我的所有字符串.但是,我遇到了一个错误,将其中一个更改为了.equals(),并修复了该错误.
是==坏?什么时候应该不应该使用它?有什么不同?
此代码将字符串分隔为标记并将它们存储在字符串数组中,然后将变量与第一个主页进行比较...为什么它不起作用?
public static void main(String...aArguments) throws IOException {
String usuario = "Jorman";
String password = "14988611";
String strDatos = "Jorman 14988611";
StringTokenizer tokens = new StringTokenizer(strDatos, " ");
int nDatos = tokens.countTokens();
String[] datos = new String[nDatos];
int i = 0;
while (tokens.hasMoreTokens()) {
String str = tokens.nextToken();
datos[i] = str;
i++;
}
//System.out.println (usuario);
if ((datos[0] == usuario)) {
System.out.println("WORKING");
}
}
Run Code Online (Sandbox Code Playgroud) 字符串部分是String [6]:
["231", "CA-California", "Sacramento-155328", "aleee", "Customer Service Clerk", "Alegra Keith.doc.txt"]
但是当我比较parts[0]时"231":
"231" == parts[0]
Run Code Online (Sandbox Code Playgroud)
以上结果是假的,
我很困惑,所以有人能告诉我为什么吗?
我真的不知道为什么下面的if语句没有执行:
if (s == "/quit")
{
System.out.println("quitted");
}
Run Code Online (Sandbox Code Playgroud)
以下是全班.
这可能是一个非常愚蠢的逻辑问题,但我一直在把头发拉到这里,但是无法解决这个问题.
谢谢你看:)
class TextParser extends Thread {
public void run() {
while (true) {
for(int i = 0; i < connectionList.size(); i++) {
try {
System.out.println("reading " + i);
Connection c = connectionList.elementAt(i);
Thread.sleep(200);
System.out.println("reading " + i);
String s = "";
if (c.in.ready() == true) {
s = c.in.readLine();
//System.out.println(i + "> "+ s);
if (s == "/quit") {
System.out.println("quitted");
}
if(! s.equals("")) {
for(int j = 0; j < …Run Code Online (Sandbox Code Playgroud) 我最近在最近的回答中收到了使用以下内容的downvote :
String word = ...;
if ("s".equals(word) || "y".equals(word)
Run Code Online (Sandbox Code Playgroud)
由于使用"yoda条件"而给出了downvote.我要求进一步解释,但没有提供.我更喜欢这种风格以避免可能NullPointerException.
这是一种糟糕的编码风格吗?如果是这样,为什么?
如果我尝试.equals()在java中对空字符串执行操作,则会抛出空指针异常.我想知道,如果我想比较一个字符串是否等于某个常量字符串,我可以执行以下操作:
MY_CONSTANT_STRING.equals(aStringVariable)
Run Code Online (Sandbox Code Playgroud)
我知道它会起作用,但这只是非常糟糕的代码吗?
一般来说,两者之间是否存在差异
if("x".equalsIgnoreCase(myStrVar))
Run Code Online (Sandbox Code Playgroud)
和
if(myStrVar.equalsIgnoreCase("x"))
Run Code Online (Sandbox Code Playgroud)
因为第一个不会导致空指针异常,但第二个将在两个方案中都myStrVar为空?
我正在写一个服务应用程序Android.在这个应用程序中,我正在使用onStartCommand事件从Main活动接收命令.该IF块正在检查变量.正如您在图片中看到的那样(调试模式),值为"start"但该IF语句不起作用并将重定向到Else.为什么?

我有一些有效的代码如下:
String a;
String b;
a = get_string_from_complex_procedure_1();
b = get_string_from_complex_procedure_2();
if (a != b)
{
put_up_error_dialog("["+a+"] != ["+b+"]");
}
Run Code Online (Sandbox Code Playgroud)
代码的设计使得a和b 最终应该完全相同,实际上它们大部分时间都是相同的,但偶尔会出现错误对话框.令人困惑的是,当对话框报告时,两个字符串看起来与我相同.我想知道什么样的事情会导致这个问题?