如何与Object类进行比较?

时间:2017-01-14 20:00:34

标签: java netbeans

如何与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);
        }
    }
       }       

3 个答案:

答案 0 :(得分:2)

在Java中,在对象上调用equals使用对象的标识。除非调用getQuantity和getPrice返回字符串,否则它们不会相等。我建议您不要使用原始对象并使用实例的实际类型,如果需要执行比较字符串到双打等操作,则覆盖等于。

答案 1 :(得分:1)

StringDouble.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);  
        }
    }
}