如何与Object类进行比较?
我试过
if ("0.0".equals(price) ||"0.0".equals(quantity))
和
if: (price.equals("0.0") ||quantity.equals("0.0"))
在最后的其他内容中,它始终打印0.0
,但如果!!
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){for (int i = model1.getRowCount() - 1; i >= 0; i--) {
Object price = model1.getValueAt(i, tbl_order_detail.getColumnCount() - 8);
Object quantity = model1.getValueAt(i, tbl_order_detail.getColumnCount() - 11);
//if ("0.0".equals(price) ||"0.0".equals(quantity))
if (price.equals("0.0") ||quantity.equals("0.0"))
{
model1.removeRow(i);
System.out.println("price&: "+price);
System.out.println("quantity&: "+quantity);
}else{
System.out.println("price: "+price);
System.out.println("quantity: "+quantity);
}
}
}
答案 0 :(得分:2)
在Java中,在对象上调用equals使用对象的标识。除非调用getQuantity和getPrice返回字符串,否则它们不会相等。我建议您不要使用原始对象并使用实例的实际类型,如果需要执行比较字符串到双打等操作,则覆盖等于。
答案 1 :(得分:1)
String
,Double
和.equals()
类都有Object
方法,但它们的工作方式不同。
对于.equals()
类,将对象的哈希码(唯一对象ID)进行比较以获得相等性。该比较要求"这些相同的对象?"
对于String类,String
执行字符串比较,这是我认为您想要的,是否比较包含字符串或字符串文字的string interning
对象,或两者的结合。 JVM内部实际使用String.equals()
,其中只有一个字符串值的副本存储在整个JVM中,无论哪个对象(或文字表示)引用它,这对你来说是不可见的,对你正在做的事情并不重要...... Double
比较字符串值以及你需要知道的所有内容。
对于 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
for (int i = model1.getRowCount() - 1; i >= 0; i--) {
Object price = model1.getValueAt(i, tbl_order_detail.getColumnCount() - 8);
Object quantity = model1.getValueAt(i, tbl_order_detail.getColumnCount() - 11);
if (price instanceof String && quantity instanceof String) {
if (((String)price).equals("0.0") || ((String)quantity).equals("0.0")) {
model1.removeRow(i);
System.out.println("price&: "+price);
System.out.println("quantity&: "+quantity);
} else {
System.out.println("price: "+price);
System.out.println("quantity: "+quantity);
}
}
}
}
类,比较是数字。
model1.getValueAt()
以上可能是您想要的,假设 let currentUrl = window.location.href;
if (currentUrl.indexOf('#test_test') === -1) {
window.location.href = currentUrl.replace(/(#.+)/gi, '#_test_test');
}
返回String类型。如果不能保证返回特定类型,则在分配或测试值之前,您需要检查它返回的对象类型,以确保它被向下转换为适当的类型。
但这是另一个主题。
答案 2 :(得分:1)
当我尝试:
if(object1 == null || object2 == null) {
model1.removeRows();
}
它可以工作,但只有当对象为空且不满足“0.0”时才这样,所以最后我将对象转换为字符串,这就是我所做的:
private void btn_clearActionPerformed(java.awt.event.ActionEvent evt) {
for (int i = model1.getRowCount() - 1; i >= 0; i--) {
Object price = model1.getValueAt(i, tbl_order_detail.getColumnCount() - 8);
Object quantity = model1.getValueAt(i, tbl_order_detail.getColumnCount() - 11);
String s1=price.toString();
String s2=quantity.toString();
//if ("0.0".equals(price) ||"0.0".equals(quantity))
if (s1.equals("0.0") ||s2.equals("0.0"))
{
model1.removeRow(i);
}
}
}