Possible Duplicate:
String equality vs equality of location
我仅谈一下我第一次评估课程,标值为97.14%,评论“在比较你需要使用的“......平等”方法时,你不会去做你可能期望的工作”。
如何? 如果是这样的话,那么为什么我的测验都是正确进行的?
Possible Duplicate:
String equality vs equality of location
我仅谈一下我第一次评估课程,标值为97.14%,评论“在比较你需要使用的“......平等”方法时,你不会去做你可能期望的工作”。
如何? 如果是这样的话,那么为什么我的测验都是正确进行的?
You got lucky.“=”比较了这两个物体,看它们所指的记忆。 它与实际扼杀无关。
如下文评论所述,如果你重新比较两个示意图,它们可能(将)在同一记忆点结束。 So
String a = "abc";
String b = "abc";
在此情况下,<代码>(a = b)将予回复。 但是,如果你把他们带进不同的记忆地点,
String a = new String("abc");
String b = new String("abc");
然后(a = b)
将不再有效。
基本上,=
比较了您的两个变量是否相同。 对大多数细致的比较,这只会巧合。
它的根源是,有两种平等:参考和价值。
http://leepoint.net/notes-java/data/expressions/22compareobjects.html
<代码>=的操作者,如果 Java按参考而不是按价值比较。 更正确的是,它比较了两个按价值列出的参考资料,但没有按内容对参考物体进行比较。
See this article for moreread.
class test{
public static void main(String[] args)
{
String a =new String("ABC");
String b =new String("ABC");
System.out.println(a==b); //prints False
System.out.println(a.equals(b)); //prints true
}
}
这不仅关系到扼杀,而且关系到所有物体。 操作人 = 比较参考文献,而同等()方法应当比较物体内容。 仅限。
BTW也与其他语言有关。 java语中的参照点类似C. 因此,同样的比较规则也适用于C。
你是幸运的。 页: 1 最大27分:
在 Java,有两种不同类型:原始和物体参考资料。
Primitives include integers,rots等, = 工作如你预期。 在提到物体时,当你使用==时,它检验提及点是否相同,而不是这些参考点所指的物体是否相同。
努力不是原始的,而是目标;因此=将测试参考平等。 你们需要测试平等的方法,以便从目标价值的角度检验平等。
如你所知, Java不是这一意义上的纯目标语言,你有的变量不是物体。 例如,由于分类是原始的,他们没有办法,因此你可以做像<代码>3.add(4)<>>。 但是,有时,你们需要把物体从愤怒中排出来,即象Integer这样的包装类别。 在某些情况下,转换是自动的,称为auto Box。 例如,当你向ArrayList放电时,自ArrayList只接受物体后,自动箱子转换为物体;这种转换必须在Java 5之前手工进行。
以下是解释差异的最佳方式:
String a = new String("foo");
String b = new String("foo");
if(a == b) {
// Does not execute
}
if(a.equals(b)) {
// Executes
}
// Now make a reference the same memory location as b
a = b;
if(a == b && a.equals(b)) {
// Executes
}
由于这是你的第一个任务,我毫不奇怪,你没有获得这一权利。 许多人在重新开始学习以制定法典时,就走了。 以这种方式思考......
“=”在比较“EXACT”同一件事时是真实的。 你们的父亲的名字是博博。 当你叫他“父亲”或他人叫他“Bob”时,你会重复提及同一人。 这就是[So Bob=父亲]使用的“=”。
当你重新比较类似目标时,“平等”即属实。 因此,如果你刚刚购买了2008年《Honda协议》,而你的朋友刚刚购买了2008年《Honda协议》,你会说,你都有SAME汽车。 即便如此,这些车辆也不是“EXACT”相同的汽车[So You Car. Equals(yourFriends Car)]。 但是,这差别很大,因为正是方案制定者才决定什么使两个目标相同。
=
比较了物体参考资料,如果两个物体指同一实际记忆地点,该编号即告复。
=
,但通常优先于测试两种物体是否具有相同的内容。
对于“强硬”类,由于汇编者(可能还有联合核查机制)一般会试图确保分配相同字面直面价值的两个“强硬”提法指同一个强硬物。
因此:
String a = "xxx";
String b = "xxx";
System.out.println(a == b); // usually "true"
以上编码通常印刷“真实”,因为汇编者只储存一个xxx>
字面和a
和b
。 如果在完全分开的班级中界定<代码>a和b
,但现在的I m guessing,甚至可能如此。
Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...
Check this, List<String> list = new ArrayList<String>(); for (int i = 0; i < 10000; i++) { String value = (""+UUID.randomUUID().getLeastSignificantBits()).substring(3, ...
I am in the middle of solving a problem where I think it s best suited for a decorator and a state pattern. The high level setting is something like a sandwich maker and dispenser, where I have a set ...
I have been trying to execute a MS SQL Server stored procedure via JDBC today and have been unsuccessful thus far. The stored procedure has 1 input and 1 output parameter. With every combination I ...
I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...
If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...
I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....
I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...