当前位置:  技术问答>java相关

兄弟们快帮我来看看,奇怪的不能在奇怪的问题.我晕倒后有爬起来.

    来源: 互联网  发布时间:2017-04-14

    本文导语:  问题是以下这段程序:      String query1;      if (query1 == "test") {        forward = "FAILED";        return mapping.findForward(forward);      } 无论如何IF条件判断也无法为TRUE. -------------------------------------------- ...

问题是以下这段程序:

     String query1;
     if (query1 == "test") {
       forward = "FAILED";
       return mapping.findForward(forward);
     }
无论如何IF条件判断也无法为TRUE.

--------------------------------------------
我进行了以下测试:

     String query1;
     System.out.print(query1);
     System.out.print(query1.length());
     if (query1 == "test") {
       forward = "FAILED";
       return mapping.findForward(forward);
     }
屏幕输出:test4
但是IF条件判断也无法为TRUE.

下面是完整程序:
package com.search.action;

import javax.servlet.http.*;
import org.apache.struts.action.*;

public class searchAction  extends Action {

  /** @param mapping
    * @param form
    * @param request
    * @param response */
  public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
  {
     searchForm       theForm      = (searchForm)form;
     String           query1       = theForm.getQuery1();
     String           forward      = "SUCCESS";

     // check the initial data
     if (query1 == "test") {
       forward = "FAILED";
       return mapping.findForward(forward);
     }
     return mapping.findForward(forward);
   }
}

救救我吧! 我的头都大了.和字符集有关系吗?

|
if (query1 == "test") {
query1是一个字符串,
"test"也是一个字符串/
当像上面比较的时候,比较的两个字符的handle,所以是不为true的
用equals()就可以。
再java中除了基本数据类型以外,别的都是使用的对象的handle的。
要判断两个对象的关系,不要使用==,使用euqals比较好

|
==比较对象内存地址,不是比较内容。

|
如果虚拟机总是把相等的串安排为共享,那么可以使用==来测试它们是否相等。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3