复制构造函数和赋值运算符有什么区别

目录:

Anonim

主要区别 复制构造函数和赋值运算符之间是 复制构造函数是一种构造函数,它有助于在不影响原始对象的值的情况下创建已存在对象的副本,而赋值运算符是一种有助于为程序中的变量分配新值的运算符。

构造函数是一种特殊的方法,它有助于在创建对象时对其进行初始化。它与类名同名,没有返回类型。程序员可以编写一个构造函数来为类中的实例变量赋予初始值。如果程序中没有构造函数,则会调用默认构造函数。复制构造函数是一种构造函数,可帮助创建现有对象的副本。另一方面,赋值运算符有助于为变量分配一个新值。

构造函数、复制构造函数、赋值运算符、变量

什么是复制构造函数

在编程中,有时需要在不影响原始对象的情况下创建对象的单独副本。复制构造函数在这些情况下很有用。它允许创建同一类的现有对象的复制。请参考以下示例。

图 1:带有复制构造函数的程序

类 Triangle 有两个实例变量,称为 base 和 height。在第 8 行,有一个参数化构造函数。它需要两个参数。这些值被分配给实例变量 base 和 height。在第 13 行,有一个复制构造函数。它接受一个三角形类型的参数。新对象的基值被分配给实例变量基。同样,新对象的高度值被分配给实例变量 height。此外,还有一种叫做calArea的方法来计算和返回面积。

在 main 方法中,t1 和 t2 是 Triangle 对象。创建 t2 对象时传递对象 t1。调用复制构造函数来创建 t2 对象。因此,t2 对象的底和高与 t1 对象的底和高相同。最后,两个对象具有相同的面积。

什么是赋值运算符

赋值运算符可用于为变量分配新值。赋值运算符是“=”。当有 c = a + b 的语句时; “a”和“b”的总和被分配给变量“c”。

图 2:带有赋值运算符的程序

Number 类有一个名为 num 的实例变量。第 7 行没有参数构造函数。但是,第 9 行有一个参数化构造函数。它接受一个参数并使用赋值运算符将其分配给实例变量。在第 12 行,有一个叫做 display 的方法来显示数字。在main方法中,num1和num2是两个Number类型的对象。打印 num1 和 num2 给出对这些对象的引用。 num3 是 Number 类型。在第 24 行,使用赋值运算符将 num1 赋值给 num3。因此,num3 指的是 num1 对象。因此,打印 num3 给出了 num1 引用。

赋值运算符及其变体如下。

操作员

功能

例子

=

将右操作数分配给左操作数

z = x + y

+=

将右操作数添加到左操作数并将结果分配给左操作数

z += y 等价于 z = z +y

– =

从左操作数中减去右操作数,并将结果赋给左操作数。

z -= y 等价于

z = z -y

* =

将右操作数与左操作数相乘,并将结果分配给左操作数。

z *=y 等价于

z = z*y

/=

将左操作数与右操作数相除,并将结果分配给左操作数。

z / = y 等价于

z = z/y

%=

取两个操作数的模数并将答案分配给左操作数。

z % = y 等价于

z = z % y

<<=

左移 AND 赋值运算符

z << 5 等价于

z= z<<5

>>=

右移 AND 赋值运算符

z >>5 等价于

z= z>>5

&=

按位与赋值运算符

z&=5 等价于

z = z&5

^=

按位异或和赋值运算符

z ^=5 等价于

z = z^5

|=

按位包含 OR 和赋值运算符

z |= 5 等价于 z = z|5

复制构造函数和赋值运算符之间的区别

定义

复制构造函数是一种特殊的构造函数,用于创建一个新对象作为现有对象的副本。相反,赋值运算符是用于为变量分配新值的运算符。这些定义解释了复制构造函数和赋值运算符之间的基本区别。

对象功能

对象的功能也是复制构造函数和赋值运算符之间的主要区别。复制构造函数使用已经存在的对象初始化新对象,而赋值运算符将一个对象的值分配给另一个已经存在的对象。

用法

复制构造函数有助于创建现有对象的副本,而赋值运算符有助于为变量分配新值。这是复制构造函数和赋值运算符之间的另一个区别。

结论

复制构造函数和赋值运算符之间的区别在于,复制构造函数是一种构造函数,它有助于在不影响原始对象的值的情况下创建已存在对象的副本,而赋值运算符是一种有助于将新值分配给的运算符程序中的一个变量。

参考:

1. 塔库尔,迪内什。 “Java 示例中的复制构造函数。”计算机笔记,可在此处获得。

复制构造函数和赋值运算符有什么区别