我有一个小问题我使用putExtra将“0”传递给活动,我在日志中得到一些奇怪的结果:

0假

但它必须是0真的

怎么了

public class ItemEditCreate extends Activity{
String name;
EditText editText;

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.edit_create);

    if (savedInstanceState == null){
        Bundle extras = getIntent().getExtras();
        if (extras == null){
            name = null;
        }else{
            name = extras.getString("Item");
        }
    }else{
        name = (String) savedInstanceState.getSerializable("Item");
    }
    Log.i("Hello",name);
    Log.i("Hello",Boolean.toString((name == "0")));

    if (name == "0"){
       setTitle("Добавление элемента");
    }else{
        setTitle("Редактирование элемента");
        editText = (EditText) findViewById(R.id.edited_name);
        editText.setText(name);
    }
}
}

===============>>#1 票数:1

你做错了比较,我认为你必须使用,

 Log.i("Hello",Boolean.toString((name.equals("0")));

编辑::

将对象引用与==和!=运算符进行比较

可以与对象引用一起使用的两个运算符是比较相等性(==)和不等式(!=)。 这些运算符比较两个值以查看它们是否引用同一对象。 虽然这种比较非常快,但通常不是你想要的。

通常,您想知道对象是否具有相同的值,而不是两个对象是否是对同一对象的引用。 例如,

if (name == "Mickey Mouse")   // Legal, but ALMOST SURELY WRONG

仅当name是对“Mickey Mouse”引用的同一对象的引用时才会出现这种情况。 如果名称中的String是从输入读取或计算的(通过将字符串放在一起或使用子字符串),这将是错误的,即使名称确实确实具有其中的那些字符。

许多类(例如String)定义equals()方法来比较对象的值。

使用equals()方法比较Object值

使用equals()方法比较对象值。 equals()方法返回一个布尔值。 前面的例子可以通过写:

if (name.equals("Mickey Mouse"))  // Compares values, not references.

因为equals()方法首先进行==测试,所以当对象相同时,它可以相当快。 它仅比较两个引用不相同时的值。

===============>>#2 票数:1 已采纳

问题在于条件name == "0" ==运算符不会比较两个字符串的值。 要比较两个字符串的值,请使用equals()equalIgnoreCase()方法

使用name.equals("0")name.equalsIgnoreCase("0")

===============>>#3 票数:0

要比较字符串的相等性,请不要使用== ==运算符检查两个对象是否完全相同。 两个字符串可以是不同的对象,但具有相同的值 (在它们中具有完全相同的字符)。 使用.equals()方法比较Strings是否相等。

===============>>#4 票数:0

您已经实现了错误的字符串比较我认为:

if (name == "0")

相反,你可以实现:

name.equalsIgnoreCase("0");
 or 
name.equals("0");

===============>>#5 票数:0

你必须使用equals()方法来比较两个字符串..使用

Boolean.toString((name.equals("0")))

  ask by takayoshi translate from so

未解决问题?本站智能推荐: