首页 > 编程语言 > 详细

你知道Java的操作符——“=”号吗

时间:2020-11-13 12:12:17      阅读:25      评论:0      收藏:0      [点我收藏+]

本篇来说道说道 Java 的操作符——“=”号:我不是判官,我只是用来赋值的。

记得 2015 年刚参加工作的时候,我的同事小王就因为一行简单的代码被领导骂的狗血喷头。当时小王被骂的那个惨啊,至今我还历历在目。究竟是一行什么代码呢?据我惨痛的回忆,大概是这样的:

技术分享图片

我那同事小王很明显是想要判断 b 和 c 是否相等(==),然而却莫名其妙的少了一个 = 号,变成了赋值操作;我相信小王绝对不是故意的,只是当时急于和女朋友聊天少写了一个=号而已。但这样的错误竟然没有被编译器发现,因为当 b 和 c 是布尔(boolean)类型时,编译器就不会报错提示——这真是小之又小的概率,就这么不幸的被小王撞上了(重要的是被领导当众羞辱)——从此以后,小王对编程失去了信心,实习期没结束,小王就转行做汽车销售了。

悲哀啊!

我和小王相处的时间大概有 3 个月吧,对他的印象蛮好的,蛮聪明伶俐的一个少年;可惜被这样一个不经意的错误给耽搁了。

是时候给“=”号一个明确的宣言了:我不是判官,我只是用来赋值的;什么意思呢?意思是,取“=”号右边的值(右值),把它复制给左边(左值);右值可以是任何常数、变量或者生成一个值得表达式;但左值必须是一个明确的、已命名的变量。例如,可以将一个字符串赋值给一个变量:

技术分享图片

关键点:

1)得到你的人却得不到你的心;来看这么一段代码:

技术分享图片

怎么解释上面这段代码呢?答案是:

基本数据类型在赋值(生动而又不恰当的说法就是结婚吧)的时候,其实是把右值复制给了左值;但在左值发生改变的时候,右值却不会改变。这样的说法其实很绕,简单点的说法是基本类型的赋值是不会相互影响的,和对象引用的赋值是完全不同的;对象引用的赋值是会相互影响的。

2)你若不爱,我便不爱;来看这么一段代码:

技术分享图片

怎么解释上面这段代码呢?答案是:

对象引用在赋值的时候,其实改变的是引用的地址;boy = girl; 使 boy 也指向了 girl 的那个地址。因此,当 girl.level 改变的时候,boy.level 也发生了变化。

3)有钱之后还能保持自我吗?来看这么一段代码:

技术分享图片

怎么解释上面这段代码呢?答案是:

基本数据类型作为参数传递给方法之后,尽管在方法中发生了改变,但跳出方法之后的值并不会发生变化;就像 a 同学,在传递给 testQuality 方法前是个穷光蛋,尽管在 testQuality 方法中变成了千万富翁,但跳出 testQuality 方法后依然是个穷光蛋。

对象引用作为参数传递给方法之后,一旦在方法中发生了改变,跳出方法之后的值也会发生变化;就像 b 同学,在传递给 testQuality 方法前是个穷光蛋,在 testQuality 方法中变成了千万富翁,那么跳出 testQuality 方法后仍然是个千万富翁。

话外音:如果你把这种情形归结为,我是认同的。

?PS:如果你在学习过程中遇到什么问题,或者缺乏相关的学习资料,可加入我的Java学习交流Q群:927296445,随问随答,群里面还有我这段时间整理的一些Java学习手册,面试题,开发工具,PDF文档书籍教程,需要的话都可以进来自行下载。

你知道Java的操作符——“=”号吗

原文:https://www.cnblogs.com/lcywuwuwu/p/13968442.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!