为什么 extra.getString() == "edit" 不被调用?工作,但是 extra.getInt() == 1 工作吗?

发布于 2025-01-03 11:43:08 字数 454 浏览 1 评论 0 原文

这是我的问题代码的要点:

String from = extra.getString("from");
Log.d("Cat", from);  //debugs as edit
if(from == "edit") {
  Log.d("Cat", "Edit");
} else {
  Log.d("Cat", "Not Edit");
}

它将转到“不编辑”

在我的调用活动中

cIntent.putExtra("from", "edit");
startActivity(cIntent);

,如果我将所有内容更改为 getInt 并传递 1,则它会调试为“编辑”,如果传递 2,则调试为“不编辑”。

我不明白发生了什么事。如果需要的话我可以忍受它,但我觉得我在这里错过了一些非常基本的东西。

谢谢。

Here's the gist of my problem code:

String from = extra.getString("from");
Log.d("Cat", from);  //debugs as edit
if(from == "edit") {
  Log.d("Cat", "Edit");
} else {
  Log.d("Cat", "Not Edit");
}

It would go to "Not Edit"

In the calling activity I have

cIntent.putExtra("from", "edit");
startActivity(cIntent);

If I changed all that up to getInt and passed 1, it debugs as Edit, and if passed 2, debugs as Not Edit.

I don't understand whats going on. I can live with it if I need to, but I feel like I'm missing something very basic here.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

佞臣 2025-01-10 11:43:09

使用 equals 方法:

if(from.equals("edit")) {
  Log.d("Cat", "Edit");
} else {
  Log.d("Cat", "Not Edit");
}

Use the equals method:

if(from.equals("edit")) {
  Log.d("Cat", "Edit");
} else {
  Log.d("Cat", "Not Edit");
}
谎言月老 2025-01-10 11:43:09

在Java中,您需要如下比较字符串,

if(from.equal ( "edit") ) 
{
  Log.d("Cat", "Edit");
} 
else 
{
  Log.d("Cat", "Not Edit");
}

“==”用于比较对象,而不是值。

In Java you need to compare strings as follows,

if(from.equal ( "edit") ) 
{
  Log.d("Cat", "Edit");
} 
else 
{
  Log.d("Cat", "Not Edit");
}

"==" is used to compare object, not values.

后eg是否自 2025-01-10 11:43:09

在Java中,当您使用==进行比较时,它会比较对象之间的引用ID(指针)。
对于像 int 这样的数字对象,它的值就是它的 id。
但是,对于字符串,两个相同的字符串可能具有不同的 ID。因此,当您使用 == 比较它们时,它将返回 false,因为它是不同的对象。

如果您使用 firstString.equal(secondString) 之类的,它将获取该字符串的值并使用它进行比较。

希望这能回答您的问题,长话短说,永远不要使用 == 比较字符串。

In Java when you compare using ==, it compares reference ID(pointer) between objects.
In case of numeric object like int, it's value is it id.
However, with String two identical strings may have different IDs. So when you compare them using ==, it will return false since it's different object.

If you use firstString.equal(secondString) of sorts, it will take the value of that string and compare using it.

Hope this answer your question, long story short never compare string using ==.

酒绊 2025-01-10 11:43:09

比较字符串时应该使用 str.equalsIgnoreCase(String s) ,因为 equals 方法主要用于比较对象,在某些情况下它无法比较两个完全相同的字符串

You should use str.equalsIgnoreCase(String s) when comparing strings because equals method is primarily used to compare objects, and in some cases it cannot compare two exactly the same strings as it should

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文