不闲聊!!!不扯淡!!!小UP只分享Java相关的资源干货

Java赋值运算符

赋值运算符目前也是只需要掌握=、+=、-=、*=、/=、%=,其它和二进制相关的内容也是到后面遇到的时候再详细学习。赋值类的运算符包括基本赋值运算符(=)和扩展的赋值运算符(+=、-=、*=、/=、%=)。我们来看一段代码:

public class AssignmentOperatorTest01 {

public static void main(String[] args) {

//基本的赋值运算符

int i;

i = 10;

System.out.println("i = " + i);

i = 100;

System.out.println("i = " + i);

//扩展的赋值运算符

int x = 10;

x += 1; //等同于x = x + 1

System.out.println("x = " + x); //11

int y = 10;

y -= 1; //等同于y = y - 1

System.out.println("y = " + y); //9

int z = 10;

z *= 2; //等同于z = z * 2

System.out.println("z = " + z); //20

int m = 10;

m /= 3; //等同于m = m / 3

System.out.println("m = " + m); //3

int n = 10;

n %= 3; //等同于 n = n % 3

System.out.println("n = " + n); //1

}

}

x += 1和x = x + 1真的是完全相同吗?我们来看下面的代码:

public class AssignmentOperatorTest02 {

public static void main(String[] args) {

byte b = 10;

//以下程序编译报错,编译器提示错误信息为:

//Type mismatch: cannot convert from int to byte

/*

* 编译没有通过的原因:b是byte类型,1是int类型,根据之前讲解的类型

* 转换规则得知,byte和int混合运算最后结果是int类型,int类型的值

* 无法直接赋值给byte类型的变量b,所以编译报错。

*/

//b = b + 1;

b += 1; //编译通过并可以正常运行

System.out.println("b = " + b); //11

//通过以上的测试得出:b = b + 1和b += 1是不一样的

//那么b += 1等同于什么呢?

/*

* 实际上java对于扩展类的赋值运算符进行了特殊的处理,所有

* 的扩展赋值运算符,最终都不会改变运算的结果类型,假设前面

* 的变量是byte类型,那么后面的表达式运算之后的结果还是byte

* 类型。所以实际上b += 1等同于:

*/

b = (byte)(b + 1);

System.out.println("b = " + b); //12

b += 1000; //编译通过,并且可以正常运行

/*

* 以上代码实际上等同于:b = (byte)(b + 1000);

* 分析得出,显然结果已经超出了byte类型取值范围,所以精度一定

* 会损失,最终的结果需要对计算机二进制的原码反码补码进行研究。

*/

System.out.println("b = " + b); //-12

}

}

根据以上代码测试得出,对于扩展类的赋值运算符在运算的过程中不会改变运算的结果类型,也就是说byte b = 100; b += 1000;b变量最初是byte类型,最后的运算结果还是一个byte类型。这是一条固定的语法规则,大家记住就行了,以后在使用扩展类赋值运算符的时候要谨慎,不小心就会精度损失的。

学习本文之前建议先看:Java十四天零基础入门- Java位运算符​zhuanlan.zhihu.com

下一篇文章学习地址:Java十四天零基础入门-Java条件运算符​zhuanlan.zhihu.com

更多相关Java视频教程资料:2020最新版Java视频学习路线图-学习Java独孤九剑总纲篇​zhuanlan.zhihu.com

你的素质五连就是小UP的动力

假赋值java_Java十四天零基础入门-Java赋值运算符相关推荐

  1. java短除法获取二进制_Java十四天零基础入门-Java的数据类型介绍

    不闲聊!!!不扯淡!!!小UP只分享Java相关的资源干货 本章节目标: 理解数据类型的作用.Java中包括哪些数据类型?常见的八种基本数据类型都有哪些?会用八种基本数据类型声明变量?什么是二进制?原 ...

  2. Java从键盘输入n行字符串_Java十四天零基础入门-Java布尔类型

    不闲聊!!!不扯淡!!!小UP只分享Java相关的资源干货 Java布尔类型 在Java语言中布尔类型的值只包括true和false,没有其他值,不包括1和0,布尔类型的数据在开发中主要使用在逻辑判断 ...

  3. 【JAVA学习】1、零基础入门Java 基础语法:概念、规则、格式

    [JAVA学习]1.零基础入门Java 基础语法 前言 JAVA开发环境选择 Java 基础概念 Java 标识符 Java修饰符 基础代码模板框架 命名规则 基础规则 后端开发规则 代码格式 前言 ...

  4. Java好学吗?零基础入门Java,三个就业方向实现月入过万!

    Java好学吗?零基础入门Java容易吗?据统计,这是很多人学习前最常问也是最关心的问题之一. 不可否认,大家在开始接受新事物的时候都会陷入困境,但学习是循序渐进的,零基础入门Java到底难不难,只有 ...

  5. 视频教程-由浅入深Java零基础入门-Java

    由浅入深Java零基础入门 负责过多个软件项目的研发.设计和管理工作,拥有项目管理师认证.项目监理师中级认证.出版过的图书有<微信小程序开发图解案例教程><Axure RP8原型设计 ...

  6. 【JavaSE】零基础入门Java语言

    目录 1.初识Java

  7. 零基础入门 Kubernetes,你需要知道这些

    Kubernetes是什么? 大概很多人对此都有疑问,不过在容器领域,Kubernetes却无人不晓. 阿里.字节跳动.腾讯.百度等中国互联网行业巨擘们,近年来都在深耕容器领域,而Kubernetes ...

  8. 2022年最新最全的Java零基础入门,零基础入门springboot,MySQL的学习

    今天就来开始带领大家零基础入门Java开发 写在前面 为什么学习Java Java用途很广泛,如下图所示,Java可以做很多工作 JAVA语言发展史 2019年3月,JDK12版本发布. 2019年9 ...

  9. 零基础学JAVA怎么学?

    spring cloud分布式事务从入门到精通 (如下载连接失效,请私信我) 百度云下载链接:https://pan.baidu.com/s/1EtYyj7MEBqIGSYg2ljBFyg 提取码:n ...

最新文章

  1. 来个例子,彻底弄懂什么是 EM 算法
  2. 【自然框架】之“元数据”的威力
  3. ffmpeg连接超时与解码超时
  4. numpy 点乘_斯坦福CS217(六)Spatial点乘示例
  5. springboot下使用mybatis配置
  6. flink 检查点_Flink检查点和恢复
  7. 反序列化 php R类型,pikachu-PHP反序列化、XXE、SSFR
  8. CPropertySheet 与CPropertyPage 的基本使用
  9. 回顾Swift 3,展望Swift 4
  10. 《Look at Boundary: A Boundary-Aware Face Alignment Algorithm 》阅读笔记
  11. swift版本hello
  12. 个人设想中的TCAX GUI生成的带python脚本代码的ASS字幕文件
  13. python计算逆序的四位数_用C语言程序编写:输入一个四位整数(如1234),使其倒序输出(如4321),并求其各位之和。C语言 设计算法输入一个四位正...
  14. PHP C#-QQ网站bkn算法
  15. 开机所有网卡全部down掉解决方法,ens33 down
  16. 美团leaf生成分布式唯一id
  17. 什么是双亲委派,有什么好处?
  18. Oracle分区详细解析
  19. 2.4K Star!450 个重磅前端开源项目合集推荐
  20. IT行业怎么了?程序员按时上下班也被开除

热门文章

  1. Oracle10g 64bit CentOS5.2_x64 安装手记
  2. 基于GeoMipmap的地形系统。
  3. Could not find com.android.support.constraint:constraint-layout的问题解决
  4. springboot使用logback日志,部署到tomcat不生效问题解决
  5. python高并发的解决方案
  6. python: 关于解决‘\u‘开头的字符串转中文的方法
  7. 解决异方差问题--加权最小二乘法
  8. Markdown创建页面和目录?
  9. Python整数递增与++ [重复]
  10. 如何在div中将绝对定位的元素居中?