在Java中复制长对象
我认为应该是:在Java中复制长对象,java,Java,我认为应该是: Long a = Long.valueOf(0); Long b = Long.valueOf(1); Long a = b.clone(); 但是在Long对象中没有clone方法 也许Long a=Long.valueOf(b.LongValue())可以工作,但看起来脏兮兮的。有什么好办法来处理这个问题吗?在我看来,有些东西看起来更干净了: Long a = b.LongValue() 将对装箱的值进行隐式转换。b.LongValue()将返回原语long,它将自动装箱
Long a = Long.valueOf(0);
Long b = Long.valueOf(1);
Long a = b.clone();
但是在Long
对象中没有clone
方法
也许
Long a=Long.valueOf(b.LongValue())
可以工作,但看起来脏兮兮的。有什么好办法来处理这个问题吗?在我看来,有些东西看起来更干净了:
Long a = b.LongValue()
将对装箱的值进行隐式转换。b.LongValue()
将返回原语long,它将自动装箱到long
类型的对象中
您可以阅读有关装箱和自动装箱的更多信息
下面是关于原语自动装箱的部分:
自动装箱是Java编译器在原语类型与其对应的对象包装器类之间进行的自动转换。例如,将int转换为整数,将double转换为double,等等。如果转换方向相反,则称为取消装箱
以下是自动装箱的最简单示例:
字符ch='a'
只是为了问题的完整性:
- 装箱-获取原语并在其包装类中使用它的过程。意思是在
中装箱long
或在long
中装箱Integer
,等等。。。您可以通过如下方式创建包装器类的新对象来获取装箱值:int
Long boxed = new Long(1);
或者通过将原语分配给包装类类型的变量(自动装箱):Long boxed = new Long(1); long unboxed = boxed.getValue();
- 拆箱-拆箱的相反过程。这是获取装箱参数并获取其原语的过程。通过
或自动取消装箱如下所示:getValue()
Long boxed = new Long(1);
或者只将装箱对象指定给基本体:Long boxed = new Long(1); long unboxed = boxed.getValue();
long unboxed = new Long(1);
Long a = (long) 1;
Long b = a;
a = (long) 2;
System.out.printf("a=%d, b=%d%n", a, b);
输出为
a=2, b=1
您可以通过多种方式实现:
Long a = b.LongValue(); // Autoboxing
或
Long a=Long.valueOf(b.LongValue())
正确另一个:Long myLong=new Long(otherLong);你为什么要这么做?Long是不可变的,所以想要一个克隆实例是因为其他地方存在问题。Long是不可变的。没有理由创建一个副本。不可变:+1。除非我们得到一个令人信服的解释来解释为什么需要一个新的实例,否则简单的赋值似乎是最好的。