Logica_
2015-04-28 02:33
采纳率: 93.5%
浏览 7.6k
已采纳

if语句对String类型的判断

if (use.getNewsh() == "政治类新闻") { 
                        // 把当前登录用户存放到session中
                    getSession().setAttribute("curr_use", use);
                    result = "SHsucc";
                    }else{
                        put2Request("use", "类型异常");
                    }
这句判断用户喜欢的新闻类型是否为政治类新闻,断点测试use中已经有用户的newsh属性为政治类新闻,但最终结过都是类型异常,newsh是String类型,测试其他String类型也无法判断,求助该如何解决
 @Override
    public String execute() throws Exception {
        String result = "fail";
        String real = (String) getSession().getAttribute("real");

        if (cc != null && cc.equalsIgnoreCase(real)) { // 验证码正确
            User use = userService.findone(lname);
            if (use != null) { // 用户名正确
                if (use.getPwd().equals(pwd)) { // 密码正确
                    if (use.getStatus()==1) { // 状态正常
                        if (use.getNewsh() == "政治类新闻") { 
                            // 把当前登录用户存放到session中
                        getSession().setAttribute("curr_use", use);
                        result = "SHsucc";
                        }else{
                            put2Request("use", "类型异常");
                        }
                    } else {
                        put2Request("use", "状态异常,请联系系统管理员!");
                    }
                } else {
                    put2Request("use", "密码有误,请检查!");
                }
            } else {
                put2Request("use", "用户有误,请检查!");
            }
        } else {
            put2Request("use", "验证码有误,请检查!");
        }
        return result;
    }
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • _昨日重现 2015-04-28 03:17
    已采纳

    String中,比较字符串内容是否相等用的是equals,而==主要用来判断引用是否指向堆内存的同一块地址。
    当String作为一个对象来使用(如:String str1 = new String("zhangsan"))时:1) 对象不同,内容相同,"=="返回false,equals返回true; 2)同一对象,"=="和equals结果相同;
    当String作为一个直接量来使用时,如果值不相同,对象就不相同,所以"==" 和equals结果一样。比如:
    String str1 = "zhangsan";
    String str2 = "zhangsan";
    System.out.println(str1==str2); //true
    System.out.println(str1.equals(str2)); //true
    希望对你有帮助

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • fxss1129 2015-04-28 03:05

    用 equals ;equals是比较内容 == 是比较内容,同时比较存储地址

    评论
    解决 1 无用
    打赏 举报
  • 胡图丿 2015-04-28 03:52

    用equals,也可以用StringUtils.equals(str,str)

    评论
    解决 1 无用
    打赏 举报
  • bdmh 2015-04-28 02:42

    use.getNewsh().equals("政治类新闻")

    评论
    解决 无用
    打赏 举报
  • lx624909677 2015-04-28 02:57

    if (use.getPwd().equals(pwd)) { // 密码正确 你这下面的代码不是有正确的比较字符串的代码吗?上面的怎么写的是错的?

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题