此段代码嵌在.jsp网页中,没有预期的测试效果:
<%
String aa = "00  ";
out.print(aa.length());//输出为4
aa = aa.trim();        
out.print(aa.length());//长度变为2
out.print(aa);         //输出为00
if(aa == "00"){
out.print("HEllo!");   //应该输出却没有输出
}
%> 
为什么if(aa == "00")判断为不相等呢??请指教!这只是个测试,我的最终目的是想从数据库里取Pri字符串来与“00”比较,不料Pri原来定义为Char(10)型的,虽然有某行的值记录为00,但数据库自动补上了空格,成了10位,而“00”只有两位。后来用trim()去掉空格,还是不能相等;我甚至把Pri改成Char(2)型,还是不能相等,这到底是为什么???
请您指教,非常感谢!!!ResultSet rs = sm.executeQuery(sql);
String[] arr=new String[5];
int i=0;
while(rs.next()) { 
arr[i] = rs.getString(2).trim(); //去掉空格
i++; 
}
boolean quan = false;for(int j = 0;j<arr.length;j++) 
{
out.print(arr[j]);//确实有值“00”
if(arr[j]=="00") { //没有成功
  quan = true;
  out.print("OK!");
  }
}if(quan==true){ //没有成功
out.print("HEllo!");
}%>  

解决方案 »

  1.   

    String比较最好用equals方法
    另一个out.print()应该不是输出到JSP文件吧,而是输出到WEB服务器的控制台了
      

  2.   

    if(aa == "00"){
    out.print("HEllo!");  //应该输出却没有输出

    换成if("00".equals(aa)){
    out.print("HEllo!");  //应该输出却没有输出
      

  3.   

    if(aa == "00") 比较的好像是aa的地址 与 内存中 00的地址
      

  4.   

    那数组的一个元素与字符串比较,怎么办呢? 
    ResultSet rs = sm.executeQuery(sql); 
    String[] arr=new String[5]; 
    int i=0; 
    while(rs.next()){ 
    arr[i] = rs.getString(2); 
    i++; 

    boolean quan = false; 
    for(int j = 0;j <arr.length;j++) 

    out.print(arr[j]);//确实有值“00” 
    if(arr[j].equals("00")){ //没有成功 
      quan = true; 
      out.print("OK!"); 
      } 
    } if(quan==true){ //没有成功 
    out.print("HEllo!"); 
    } 其中if(arr[j].equals("00"))报错