Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中复制长对象_Java - Fatal编程技术网

在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是不可变的,所以可以使用赋值

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。除非我们得到一个令人信服的解释来解释为什么需要一个新的实例,否则简单的赋值似乎是最好的。