首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将堆栈值与java中的字符串进行比较

将堆栈值与java中的字符串进行比较
EN

Stack Overflow用户
提问于 2013-08-16 11:47:39
回答 5查看 175关注 0票数 0

我正在尝试以下代码:

代码语言:javascript
运行
复制
import java.util.Stack;
public class HelloWorld{

 public static void main(String []args){
    Stack s=new Stack();
    s.push(5-4);
    s.push(9);
    s.push(51);
    if(s.get(1).equals("9"))
        System.out.println("yes its comparable");
    System.out.println(s.get(1));

 }
}

实际产出如下:

代码语言:javascript
运行
复制
9

我预计产出如下:

代码语言:javascript
运行
复制
yes its comparable
9

我想不出来。我也尝试过s.get(1)=="9“,但它也不起作用。这背后的关键是什么?他们都不是弦乐吗?或者一个是字符串,一个是对象,但它们仍然是可比较的。有人能给我一点启发吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-08-16 11:49:15

9是一个整数。"9"是一个字符串。

代码语言:javascript
运行
复制
s.get(1).equals("9"); // false
s.get(1).equals(9); // true
票数 7
EN

Stack Overflow用户

发布于 2013-08-16 11:49:23

9Integer"9"String

因此他们是不平等的。

票数 3
EN

Stack Overflow用户

发布于 2013-08-16 11:50:43

您正在比较两种不同的类型- StringInteger。在Stack中使用引用类型可以避免这种混淆。

代码语言:javascript
运行
复制
Stack<Integer> s=new Stack<Integer>();

使用原始类型

代码语言:javascript
运行
复制
Stack s=new Stack();

导致使用对象类型,例如当

代码语言:javascript
运行
复制
s.push(5-4);

调用时,它将自动装箱为Integer类型。然后这个表达式

代码语言:javascript
运行
复制
s.get(1).equals("9"))

计算结果为false,因为equals方法在进行比较之前检查类型。

代码语言:javascript
运行
复制
if (obj instanceof Integer) {
   return value == ((Integer)obj).intValue();
}
return false;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18272614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档