我们在前面的学习中,其实已经在很多的地方都用到了赋值运算符。赋值运算符“=”将“=”右边的值赋给(更准确说是“复制到”)左边的变量。
“=”右边的值可以是任何的变量、常量或者一个可以产生值的表达式,而“=”的左边必须是一个明确的、命名的变量,但不可以为常量,如i = 100是合法的,而100 = i 却是不允许的。
对于基本数据类型的赋值,它非常的简单,它直接将“=”右边的值复制到左边的变量中;对于引用数据类型的赋值,操作的并非是对象本身,而是它的“对象引用”,它实际上是将“=”右边的引用(而非对象本身)复制到左边的变量中。
下面以一个示例来进一步说明。
public class Assignment {
public static void main(String[] args) {
// 简单数据类型
int a, b = 100;
a = b;
b = 20;
System.out.println("a = " + a);
System.out.println("b= " + b);
Person p1 = new Person(100);
Person p2;
p2 = p1;
p1.setPersonId(111);
System.out.println("p1的PersonId=" + p1.getPersonId());
System.out.println("p2的PersonId=" + p2.getPersonId());
}
}
class Person {
private int personId;
// 构造器
public Person(int id) {
personId = id;
}
public int getPersonId() {
return personId;
}
public void setPersonId(int id) {
personId = id;
}
}
在这个示例中,我们定义了一个类“Person”,它有一个“personId”的属性。在类“Assignment”的main()方法中,我们定义了两个int简单数据类型的变量a、b,并给b赋值100,然后将b的值赋给变量a,此时实际上是将b的值的一个“副本”拷贝给了a,因此,a和b中任何一方的变化,都不会影响到另一方;
另外,我们还定义了两个Person引用类型的变量p1、p2,并给p1初始化了一个对象引用,然后,将p1的值赋给p2,此时,这个操作实际上是将p1的对象引用复制给了p2,此时,p1和p2所指向的是同一个对象!因此,无论通过变量p1还是p2去改变对象,都是改变的同一个对象。
编译并运行上面的类“Assignment”,将得到如下的输出:
a = 100
b= 20
p1的PersonId=111
p2的PersonId=111
将赋值运算符和其他的运算符结合起来,就可以作为一种特别的“扩展”赋值运算符。扩展赋值运算符有如下这些:+=,-=,*=,/=,%=,&=,|=,^=,>>=,<<=,>>>=等。
注意,并非所有的运算符都可以和赋值运算符结合成扩展赋值运算符。
扩展赋值运算符的引入只是为了简化赋值运算的表达形式,将“a=a operator b;”简化为“ a operator=b;”,其作用是相同的。
分享到:
相关推荐
46. `left*=, /=, %=, +=, -=, , >>, &=, ^=, |=` 复合赋值运算符 47. `throw` 抛出异常运算符 48. `,` 逗号运算符 了解 C++ 运算符的优先级和结合律是编写正确的 C++ 程序的关键。只有了解了运算符的优先级和结合...
1.6.7.5 运算符 .......................................................................................................................................... 23 1.6.7.6 析构函数 .............................
- 赋值运算符、比较运算符和逻辑运算符 - 位运算符 - ⾝份运算符和成员运算符 - 序列运算符和运算符优先级 - 条件语句概述 - 条件语句实现和pass - 循环语句概述和for循环 - while循环和索引 - break、...
4.1 运算符的优先级..................................................................................................... 26 4.2 复合表达式.................................................................
1.9 算术赋值运算符... 8 1.10 三元运算符(条件运算符) 9 1.11 检查变量是否存在... 10 1.12 表达式的计算顺序... 11 1.13 条件选取(if) 12 1.14 多条件的选取if 13 1.15 双重选取(if) 14 1.16 多重选取if 15...
…............44 2.2.4 程序运行与调试..................................….....................................…............46 2.2.5 Turbo C环境设置..............................….......................
5.2.1 算术运算符.............................................................................................................. 54 5.2.2 字符串运算.........................................................
7.13 赋值运算符... 136 7.13.1 简单赋值... 136 7.13.2 组合赋值... 138 7.13.3 事件赋值... 139 7.14 表达式... 139 7.15 常量表达式... 139 7.16 布尔表达式... 140 8. 语句... 141 8.1 终点与可达性... 141 8.2 ...
2.3.7 与空白交互作用...........44 2.4 语法分析..............................45 2.4.1 输入...............................45 2.4.2 输入字符.......................45 2.4.3 行结束符..........................
2. C语言运算符:赋值运算符优先级低于逗号运算符。 3. C语言函数:若未明确声明,函数默认类型为int。 4. 文件操作:使用rewind()函数可将文件位置指针返回到文件开头。 5. 计算机硬件系统:包括CPU、主存储器、...
23. 等号(Assign Equalsign):在C语言中,等号是赋值运算符,用于给变量赋予值。 24. 除法(Division)、加法(Addition)、乘法(Multiply):这些是基本的算术运算符。 25. 格式化(Format)、匹配(Match):...
赋值运算符...........................................................................................................4 基本数学定义式......................................................................
4.1 运算符的优先级... 26 4.2 复合表达式... 27 4.3 if 语句... 27 4.4 循环语句的效率... 29 4.5 for 语句的循环控制变量... 30 4.6 switch语句... 30 4.7 goto语句... 31 第5章 常量... 33 5.1 为什么需要常量......
赋值运算符(=)用于将一个表达式的结果赋值给一个变量。赋值运算分为两种:程序中指定赋值和人工输入赋值。程序中指定赋值是直接在代码中设置变量的值,而人工输入赋值则需要借助`scanf()`函数,让用户在程序运行时...
3.1 算术运算符...............13 3.2 关系运算符...............13 3.3 逻辑运算符...............13 3.4 连接运算符...............14 3.5 优先级.....15 3.6表的构造..15 第4章基本语法................18 ...
36. 运算符优先级:算术运算符优先级高于赋值运算符。 37. `break`语句:`break`语句可用于`switch`语句和循环语句中。 38. 数据存储:所有类型的数据在计算机中以二进制形式存储。 39. 输出格式:`%d`格式输出...
9.6 示例:类String的拷贝构造函数与赋值函数... 73 9.7 偷懒的办法处理拷贝构造函数与赋值函数... 75 9.8 如何在派生类中实现类的基本函数... 75 9.9 一些心得体会... 77 第10章 类的继承与组合... 78 10.1 ...