我想知道使用
我了解到它们都是Long类型,因此在Java 8中它们的内存消耗为64位长。
考虑内存消耗和时间复杂度,哪种方式更好地初始化变量?
Long.valueOf(0);
和0L
之间的区别。它们是一样的吗?我了解到它们都是Long类型,因此在Java 8中它们的内存消耗为64位长。
考虑内存消耗和时间复杂度,哪种方式更好地初始化变量?
Long a = Long.valueOf(0);
或者
Long b = 0L;
Long#valueOf
返回一个Long
类型的对象,而0L
是一个基本类型的long
。 - Jacob G.Long::value
将会给你一个Object
,而0L
则是一个原始类型(你可以通过Long b = OL;
进行装箱 - 在内部仍然使用Long::valueOf
)。 - EugeneLong.valueOf(x)
将返回相同的实例,而其他所有原始类型都会导致创建一个新实例,也就是说每次都会得到一个new Long(x)
。 - ThomasLong
、Integer
、Short
、Byte
和Character
的valueOf()
方法的JavaDoc和源代码可以告诉你一些信息。 :) 这里还可以找到更多信息:https://dev59.com/h2Ei5IYBdhLWcg3w2PSB - Thomas