==到目前为止,我一直在我的程序中使用运算符来比较我的所有字符串.但是,我遇到了一个错误,将其中一个更改为了.equals(),并修复了该错误.
是==坏?什么时候应该不应该使用它?有什么不同?
在Java中,我被告知在进行空检查时应该使用==而不是.equals().这是什么原因?
我们可以==在Class变量上做一个而不是equals期望相同的结果吗?
例如:
Class clazz = xyz;
Run Code Online (Sandbox Code Playgroud)
案例A:
if(clazz == Date.class) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
案例B:
if(Date.class.equals(clazz)) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
案例A和案例B的功能是否相同?
我今天换了讲师,他说我用了一个奇怪的代码.(他说最好使用.equals,当我问为什么时,他回答"因为它是!")
所以这是一个例子:
if (o1.equals(o2))
{
System.out.println("Both integer objects are the same");
}
Run Code Online (Sandbox Code Playgroud)
而不是我习惯的:
if (o1 == o2)
{
System.out.println("Both integer objects are the same");
}
Run Code Online (Sandbox Code Playgroud)
这两者之间有什么区别.为什么他的方式(使用.equals)更好?
通过快速搜索找到了这个,但我无法理解这个答案:
值a.Equals(b)和a == b类型,引用类型和字符串之间有什么区别?看起来似乎= = b对于字符串来说效果很好,但我一直在尝试使用良好的编码实践.
如何检查两个ArrayLists是否彼此不同?我不在乎有什么不同,我只是想知道他们是不是一样.
我每分钟从数据库中获取分数列表,并且只有当我获取的分数列表与我在一分钟前获取的分数列表不同时,我才想将其发送给客户端.
现在,ArrayList的值实际上是我创建的一个类(包含name,lvl,rank,score).
我需要实施equals()吗?
我有覆盖GetHashCode,Equals并且两种方法为不同的对象提供相同的结果,但为什么仍然得到假?
class Program
{
static void Main(string[] args)
{
Console.WriteLine(new Person("james") == new Person("james"));
Console.ReadKey();
}
}
class Person
{
private string Name;
public Person(string name)
{
Name = name;
}
public override int GetHashCode()
{
return 1;
}
public override bool Equals(object obj)
{
return true;
}
}
Run Code Online (Sandbox Code Playgroud) 我是JAVA的新手,我不知道如何打破我在下面的代码中使用的DO WHILE循环?我以为我可以输入-1来打破或所有其他数字继续循环.
import javax.swing.*;
public class Triangel {
public static void main(String[] args) {
int control = 1;
while (control == 1){
String value = JOptionPane.showInputDialog("Enter a number or -1 to stop");
if(value == "-1"){
control = 0;
}
System.out.println(value);
}
}
Run Code Online (Sandbox Code Playgroud)
}
考虑两个类型为Integer的引用,它们调用静态工厂方法valueOf,如下所示: -
Integer a = Integer.valueOf("10");
Integer b = Integer.valueOf("10");
Run Code Online (Sandbox Code Playgroud)
考虑到Integer是不可变的,可以使用==而不是使用equals方法来比较a和b.我猜测valueOf方法确保只创建一个值为10的Integer实例,并为每个使用值10创建的Integer返回对此实例的引用.
一般来说,通过使用==而不是equals来比较使用对同一静态工厂方法的调用创建的不可变类的两个引用是否可以?
编辑:Integer类仅用作示例.我知道如果使用==进行比较,那么Intgers高达127将返回true.我需要知道的是,当升创建自己的不可变类,说MyImmutable用的方法创建(),这将确保不会创建重复MyImmutable对象,会是确定的,如果我比较使用由create方法创建2个MyImmutable引用使用==而不是等于.
注意:以下是我的作业/作业,如果你愿意,请随时不回答.
我想删除/删除一个元素从String数组(Set)基本,我不允许使用Collections..etc.
现在我有这个:
void remove(String newValue) {
for ( int i = 0; i < setElements.length; i++) {
if ( setElements[i] == newValue ) {
setElements[i] = "";
}
}
}
Run Code Online (Sandbox Code Playgroud)
我做了我想要的,因为它从数组中删除元素但它没有缩短长度.以下是输出,基本上它删除了索引#1的元素.
D:\javaprojects>java SetsDemo
Enter string element to be added
A
You entered A
Set size is: 5
Member elements on index: 0 A
Member elements on index: 1 b
Member elements on index: 2 hello
Member elements on index: 3 world
Member elements on index: 4 six
Set size …Run Code Online (Sandbox Code Playgroud)