为什么java有很多重复的方法?

2022-09-02 11:29:15

我正在玩Java,因为我计划从C#切换到它以用于跨平台目的。我刚刚注意到它有很多方法可以做同样的事情。我只想知道他们为什么这样做?

例如,除了构造函数之外,Boolean 类还有两个执行相同操作的方法。

Boolean b = new Boolean(true);
Boolean b = new Boolean("true");
Boolean b = Boolean.parseBoolean(true);
Boolean b = Boolean.parseBoolean("true");
Boolean b = Boolean.valueOf(true);
Boolean b = Boolean.valueOf("true");

我可以通过调用变量本身(b)或方法b.booleanValue()来获得布尔值。有人想调用一个方法来获得布尔值的布尔值,尽管他可以只调用变量本身吗?

有什么意义?


答案 1

new Boolean(true)并返回盒装基元。可以在原始布尔值的集合等中使用的真实对象。Boolean.valueOf(true)

Boolean.parseBoolean("true")返回基元布尔值。

顺便说一句,

Boolean b = Boolean.parseBoolean(true);
Boolean b = Boolean.parseBoolean("true");

真的是错误。您正在创建一个基元布尔值,然后自动装箱到 。Boolean

您应该使用 或 代替。valueOf(true)valueOf("true")

因此,这些方法的真正用途将是

Boolean b = new Boolean(true);   //really this should never be used **
Boolean b = new Boolean("true"); //really this should never be used **
boolean b = Boolean.parseBoolean(true);
boolean b = Boolean.parseBoolean("true");
Boolean b = Boolean.valueOf(true);
Boolean b = Boolean.valueOf("true");

**不要使用它,因为你只是不必要地创建对象。使用允许重用现有对象。由于 s 是不可变的,这很好。valueOfBooleanBoolean


答案 2
  1. 有时您需要将字符串解析为基元Boolean.parseBoolean(*String*)
  2. 有时您需要将字符串解析为布尔值Boolean.valueOf(*String*)
  3. 有时不需要创建新对象。最好避免使用new
  4. 有时您需要布尔对象而不是基元Boolean.valueOf(*boolean*)

这些不是相同的需求。


推荐