日期:2014-05-18  浏览次数:20831 次

关于request的问题
为了取得一个可能有中文的text里的值,我用了:
String   name=new       String(request.getParameters( "txtName ").getBytes( "ISO8859_1 "), "GBK ");
这样中文能够正常取得,可是因为需要我判断当取空值的时候的情况,比如说text里什么也没添,我就做了:
if(name== " "||name==null){...
}else{...}
但是即使我在text里什么也不写,也不会执行if(name== " "||name==null){...}这部分,而是其他的else,可是我如果用
String   name=request.getParameters( "txtName ");就可以,

不知道这是为什么?

------解决方案--------------------
name== " "是不对的.字符串值比较使用.equals(value),并且先用==比较对象是否为null
------解决方案--------------------
if语句中括号里面的问题,你得if语句主要是判断它为空或者为空的字符串,if(name==null || name.equals( " ")) 你用String name=request.getParameters( "txtName ")他是以参数的形式取得值,还是没有搞清楚==和equals的区别
------解决方案--------------------
你的name是用new String得来的,所以他不会是null,最少都会是“”所以name==null判断不会有效果,你可能会说那name== " "呢,这个就涉及到==和equals的区别了,因为“”和new String出来的“”地址是不同的,所以==判断返回的是false,你应该用equals,这才是对内容的判断。
------解决方案--------------------
楼上正解……
------解决方案--------------------
你应该再好好看看java的基础知识

在java中 判断类的实例是否相等是用equals 而不是==

现在你的name 是String类的一个实例
------解决方案--------------------
在编译阶段就可以明确的字符串就是直接数,对于这样的内容比如String name = "hello ";
String name2 = name;这样的情况下JVM只是分配了一次内存,这样两个字符串的内存地址是一样的,但是对于new String()显然会再次申请内存这样就得到不同的内存地址中存在相同的内容这时候要使用equal而不是==