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

一个幼稚的问题```
一个幼稚的问题```

奇怪
D1   T2都是abc为什么不会显示a出来
    if(D1==T1){
  out.print( "a ");
  }
D1是通过D1=rs.getString( "asdf ");数据库给的值
T1是通过T1=request.getParameter( "T1 ");post给的值
都是String类型`  
  为什么就不会显出a来呢?

------解决方案--------------------
Java 字符串比较,是使用

if(D1.equals(T1)){

}

来实现的。

C#中可以使用 D1==T1. Java 目前只能用 D1.equals(T1)
------解决方案--------------------
== ===〉改成.equals();这是内容(字符串)比较(或者是类自己重写)
------解决方案--------------------
对象和属性是不同的:
D1和T2都是String对象的实例,它们是不同的两个实例,所以 D1 == T2 返回的是false
要判断这两个对象的值是否相同,应该使用 if ( D1.equals(T2) == true ) ,当然不要true也可以,这样才对

if(D1.equals(T1)&&D2.equals(T2)){}
这个是不需要的,但是你愿意这样写是正确的
------解决方案--------------------
==是引用等直~
调用.equals()
------解决方案--------------------
刚刚好,我前天看到一个比较详细介绍STRING比较的问题.贴出来大家共同学习吧.
STRING A是一个引用类型变量.与普通的变量是不一样的.
问题一:我声明了什么!

String s = "Hello world! ";

许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向 "Hello world! "这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:

String string = s;

我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。

问题二: "== "和equals方法究竟有什么区别?

==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
int a=10;
int b=10;
则a==b将是true。
但不好理解的地方是:
String a=new String( "foo ");
String b=new String( "foo ");
则a==b将返回false。

根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为 "foo "的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用 "== "操作符,结果会是false。诚然,a和b所指的对象,它们的内容都是 "foo ",应该是“相等”,但是==操作符并不涉及到对象内容的比较。
对象内容的比较,正是equals方法做的事。
------解决方案--------------------
java代码== 表示的是内存地址比较,你比较值的话应该用equals方法
------解决方案--------------------
楼上的都说了 我怎么办??