我正在使用Sonar使我的代码更清洁,它指出我正在使用new Integer(1)而不是Integer.valueOf(1).因为它似乎valueOf没有实例化一个新对象所以更加内存友好.怎么valueOf不能实例化一个新对象?它是如何工作的?对所有整数都是如此吗?
当Java编译器将一个原语自动装箱到包装器类时,它会在幕后生成什么代码?我想它叫:
把它放在代码中 - 性能更好(如果有差异的话)?
鉴于这种:
public class Customer
{
....
public Boolean isVIP(){...}
...
}
Run Code Online (Sandbox Code Playgroud)
哪个更快?
public void handleCustomer(Customer customer)
{
if (customer.isVIP()) // Auto Unboxing
{
handleNow(customer);
}
else
{
sayHandlingNowButQueueForTomorrow(customer);
}
}
Run Code Online (Sandbox Code Playgroud)
或这个:
public void handleCustomer(Customer customer)
{
if (customer.isVIP().booleanValue()) // Explicit unboxing
{
handleNow(customer);
}
else
{
sayHandlingNowButQueueForTomorrow(customer);
}
}
Run Code Online (Sandbox Code Playgroud)