问题:
我用
<%
String id=“1”;
if(id != null){
if(id == "1")
{
 %>
1<br> id=<%=id%>   //此处是如果id=1的时候,显示1 并且给出id
 <%
 }
 else{
 %>
 2 <br> id=<%=id%>  //此处是如果id不是1的时候,显示2 并且给出id
 <% 
 }}
 else 
 {%>
3                 //此处是如果id=null的时候,显示3 
 <%} %>
得出结果是1   id=1,这是正常现象。如果我用这种方法:
<a href="index.jsp?id=1">登陆</a>
<%
String id=request.getParameter("id");
if(id != null){
if(id == "1")
{
 %>
1<br> id=<%=id%>      //此处是如果id=1的时候,显示1 并且给出id
 <%
 }
 else{
 %>
 2<br> id=<%=id%>   //此处是如果id不是1的时候,显示2 并且给出id
 <% 
 }}
 else 
 {%>
3                    //此处是如果id=null的时候,显示3 
 <%} %>
得出结果是2 id=1谁能解释下第二种现象是为什么,为什么我用request.getParameter去赋值id的时候,id值为1,但是用if (id == "1")时他却判断成id不是1  但紧跟后面的有说id=1.所以想问下第二种中怎样正确判断id是多少

解决方案 »

  1.   

    首先:
      == 和equals的区别你要了解下!分别是比较对象的地址和值。
    其次:
      当你用String id="1";和id=="1"时,比较的是同一个对象.地址相同所以相等(==)
      
      当你用String id=request.getParameter("id"); 得到id的值时,id指向的是一个地址,只是值等与1而已
       再次比较id=="1"时,(对象id) 和(对象"1")不是同一内存地址,地址不同值相同(equals)你把if(id == "1") 都换成if(id.equals("1")) 就都是想要的结果了。
      

  2.   


    2 <br> id= <%=id%>  //此处是如果id不是1的时候,显示2 并且给出id 
    注意上面一行,你这样些就是在输出id=1啊!并没有对id重新赋值为2
    在这一行前面加上
    <%id="2"%> 就可以了
      

  3.   

    第一个:
    String id=“1”; if(id == "1") 这两个1都在一个页面,编译执行后,相当于在一个类中,内存空间共用。所以可以采用==判断第二个:由于是从另一个页面获取过来,相当于在两个类中。不能用==判断,只能用equals判断。
      

  4.   

    支持2楼的,字符串判断是否相等要用equals方法,而不是操作符==,在java中没有操作符重载的概念,操作符重载在c/c++中很好的一个技术。将你所有判断字符串相等的==改为equals方法就好了。