| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 847 人关注过本帖
标题:字符串这样什么不行
只看楼主 加入收藏
不知道二号
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2011-6-19
结帖率:0
收藏
已结贴  问题点数:5 回复次数:6 
字符串这样什么不行

import javax.swing.JOptionPane;
public class processInputData {

    public static void main(String[] args) {
   
        String name;
        while (true) {
        
                name = JOptionPane.showInputDialog(null,"Enter Name:");
            if(name=="ai"){
                System.out.println("程序结束");
                break;
                }
            }
        }
    }

搜索更多相关主题的帖子: public import 字符串 Enter null 
2011-11-22 21:06
不知道二号
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2011-6-19
收藏
得分:0 
字符串这样比较为什么不行,而要用equals()方法比较呢?求大虾解答~~
2011-11-22 21:08
付政委
该用户已被删除
收藏
得分:2 
提示: 作者被禁止或删除 内容自动屏蔽
2011-11-22 22:04
让我们飞
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:40
专家分:119
注 册:2011-1-9
收藏
得分:2 
==比较的是 2个引用(内存地址)
equals是比较这个引用相应的值
当 String name=“ai”的时候在虚拟机的内部是:先建一个String name的引用,然后再栈中创建一个值为“ai"的引用o,再将name的引用地址指向“ai”的引用
name-->o的引用-->ai引用
而 “ai”是直接在栈中创建,如果栈中有那么直接将引用指向"ai"

所以用 == 比较的是  o的引用和 ai的引用 这个比较是不行的

2011-11-23 10:25
youlishen
Rank: 2
等 级:论坛游民
帖 子:6
专家分:14
注 册:2011-9-25
收藏
得分:2 
楼主记住任何情况下都是本身的值比较,这里的引用的值其实就是字符串的地址,而不会每个字符的比较
不知道有没有说错,我也是初学者,以前学过C++是这样的,初感觉JAVA也是这种
2011-11-24 19:26
wyxpop163
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-9-10
收藏
得分:0 
==对比的是等式两个变量指向的内存
equals()对比的是两个变量的值
2011-12-01 18:40
lianlupeng
Rank: 2
等 级:论坛游民
帖 子:12
专家分:27
注 册:2011-7-1
收藏
得分:0 
能记住更好,记不住也没太大关系,毕竟object类的equal方法子类是要覆盖的。
祝好
2011-12-02 16:03
快速回复:字符串这样什么不行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017471 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved