一、赋值操作符

在 Java 语言里,等号称为赋值操作符。
例:a = b + 100;
注意,不要把 Java 语言理解为数学。在 Java 里,这个等号的作用是“赋值”,即右侧的值赋给左边的变量。

要求:
等号左边必须是变量
将等号右边表达式的值,赋给左边的变量

1、区分初始值与赋值

在定义一个变量的时候,可以指定初始值。
例如:int a = 10; // 定义一个变量 a,初始值为 10
int b; // 如果未指定初始值,则初始值为 0

2、理解赋值操作的过程

赋值操作分 2 步运行:①先计算等号右侧的式子的值,②再把右侧的值赋给左侧的变量。
例如:
int a = 10;
a = a + 99; // 重点理解这一行的赋值操作
System.out.println("a 的值为 " + a );

我们来分析一下 a = a + 99 这一行, 实际上计算机是分两步来运算出结果的:
(1) 首先,计算出左侧表达式(a+99)的值,为 109
(2) 然后,将右侧的值赋给左侧的变量,即 a=109

3、组合赋值操作符

赋值操作符可以和其他操作符组合起来使用,例如:
a += b;
a -= b;
a *= b;
a /= b;
a %= b;
规则都是一样的,相当于: a = a + b
示例:
int a = 10;
a += 12; // 相当于 a = a + 12
System.out.println("现在 a 为: " + a);
所以,a 的最终值为 22

二、常量

在 Java 里,用 final 表示常量。类比一下:变量,是可以变化的量;常量,是不能变化的量。所以,以下代码会报错:
final double PI = 3.14; // 定义常量 PI,初始值为 3.14
PI = 3.0; // 错误! PI 是 final 修饰的,其值不能修改!

三、自增操作符

在 Java 语言里,++ 称为自增操作符。例:
int a = 10;
a++;
System.out.println("现在 a 为: " + a);
其中,a ++ 可以理解为 a = a +1 。所以,最终 a 的值为 11。

1、前置自增与后置自增

自增操作符有 2 种写法,写在前面的称为前置自增,写在后面叫后置
自增。例如:后置自增:
int b = 10;
a = b++ ;

后置自增时,先把 b 的值代入式子运算,之后再对 b 自增加 1。所以,
最终的结果 a 为 10, b 为 11。

前置自增:
int b = 10;
a = ++b ;
前置自增时,先对 b 自增加 1,然后再代入式子运算。

2、自减操作符

同样的,还有一套自减操作符 -- ,例如:
a = b --;
和自增没区别,就不详细讲解。

四、操作符的优先级

当一个表达式里有多种操作符时,就是明确操作符的优先级。也就是说,哪些部分先运算,哪些部分后运算。比如:
a - b * 10 / 2
这个表达式看起来很简单。之所以我们会觉得简单,因为我们已经事先知道了算术符的优先级(小学就学过了嘛!)。但是,当把多种 Java 操作符用在一起时,就不那么简单的。比如:
a>10 && !ok
对于这样的式子,存在关系操作符 > 和逻辑操作符 && ! 。要经行运算,就必须明确优先级。在这里,关系操作符比逻辑操作符的优先
级高,而逻辑非又与逻辑与的优先级高。所以,它的运算顺序是这样的:
( (a>10) && (!ok) )
先运算 a>10 再运算 !ok ,再进行逻辑与的运算。在 Java 语言里,操作符约有几十种,想要记住它们的优先级顺序是不
太容易的。但是大家可以放心的是,我们并不需要强记这些优先级,而只是需要知道几种常用的操作符的优先级就足够了。
提示:在搞不清优先级顺序的时候,请使用小括号来显示指定顺序。

五、类型转换操作符

在整型与浮点型之间,允许类型转换。例如:
double a = 12.77;
int b = (int) a;
System.out.println("b 的值:" + b);
其中,
a 是 double 型
b 是 int 型
b = a 赋值时,要求左右两侧的类型相同。所以,把 a 转换在 int型。也就是说,一个 double 类型可以转成 int 类型。把这对小括号称
为类型转换操作符。反过来,一个 int 类型也可以转换成 double 类型。例如:
int c = 10;
double d = (double) c;

1、类型转换时的数据损失

在 double -> int 的转换过程中,数据可能发生损失。
例如:double a = 12.77;int b = (int) a; 转换后的结果为 12,即小数部分被截断。
反过来,在 int -> double 的转换过程中,数据不会损失。例如:
int c = 10;
double d = (double) c;

2、显式转换与隐式转换

在类型转换的过程中,如果没有风险和数据损失,就可以把类型转换符省略。例如:
int c = 10;
double d = c; // 省略 (double) 转换符
在 d=c 的过程中,发生了隐式的类型转换,相当于double d = (double)c ;
所以,称之为隐式转换。即自然而然的、没有任何风险的转换。

3、注意事项

(1) 小数转整数时,小数部分被截断。注意不是四舍五入!
(2) 默认其他类型是不能转换的。
例如,boolean 与 int 是不能相互转换的,boolean k = true;int a = (int) k; // 错!别乱写!

六、结尾
今天讲了算术运算符、关系运算符、逻辑运算符,还有一些讲了操作符、自增自减、操作符的优先级等。下一篇,我们来讲顺序结构、分支结构、循环结构。

更多精彩,请关注公众号

Java入门指南-03 操作符与表达式的更多相关文章

  1. AngularJS快速入门指南03:表达式

    AngularJS通过表达式将数据绑定到HTML. AngularJS表达式 AngularJS表达式写在双大括号中:{{ 表达式语句 }}. AngularJS表达式绑定数据到HTML的方式与ng- ...

  2. 测试人员学Java入门指南

    目标读者 本指南特别适合有Python基础的同学学习Java入门,对于没有任何编程经验的同学可能会存在困难. 为什么测试人员要学Java 选择Java,应该不错.TesterHome测试论坛知名大佬基 ...

  3. Java入门指南-02 变量

    一.回顾上一篇讲到了常用的DOS命令.如何创建第一个程序.打印.注释与空白. 那么我们已经学会了使用System.out.println() 可以来输出一个值.进一步的,我们可以用它来显示简单的算术运 ...

  4. java入门了解03

    ASSCII表 . 1.final关键字    (1)含义:最终的意思,修饰方法,类,变量    (2)特点:          A:修饰类,不能被继承          B:修饰的方法,不能被重载  ...

  5. Java入门指南-04 顺序、分支、循环

    顺序结构 从上至下,依次执行 if 语句在 Java 里,用 if 语句来实现“当满足 XXX 条件时,执行 YYY”这样的逻辑判断.例如,在使用共享单车时需要检查人的年纪.如果在 12 岁以下,则禁 ...

  6. Java入门指南-01 基本概要说明

    一.Java语言概述 Java是一门面向对象编程语言.编程,即编写程序.程序对于我们来说,应该是有所了解的.只是有可能你们不知道而已.比如,我们电脑上的 QQ.谷歌浏览器等,都叫做应用程序. 二.本系 ...

  7. AngularJS快速入门指南04:指令

    AngularJS通过指令将HTML属性进行了扩展. AngularJS指令 AngularJS指令是带有ng-前缀的扩展HTML属性. ng-app指令用来初始化AngularJS applicat ...

  8. AngularJS快速入门指南01:导言

    AngularJS使用新的attributes扩展了HTML AngularJS对单页面应用的支持非常好(SPAs) AngularJS非常容易学习 现在就开始学习AngularJS吧! 关于本指南 ...

  9. AngularJS快速入门指南02:介绍

    AngularJS是一个JavaScript框架.它可以通过<script>标记被添加到HTML页面中. AngularJS通过指令对HTML属性进行了扩展,然后通过表达式将数据绑定到HT ...

随机推荐

  1. springboot2.0数据制作为excel表格

    注意:由于公司需要大量导出数据成excel表格,因此在网上找了方法,亲测有效. 声明:该博客参考于https://blog.csdn.net/long530439142/article/details ...

  2. 客户端连接oracle11出现提示ORA-12514:错误解决方法

    近来安装oracle11g,使用后发现plsql和sqldeveloper等客户端工具不能用,提示以下错误: 1.ORA-12514: TNS: 程序无法监听 原因:OracleOraDb11g_ho ...

  3. Java界面程序实现图片的放大缩小

    Java界面程序实现图片的放大缩小.这个程序简单地实现了图片的打开.保存.放大一倍.缩小一倍和固定缩放尺寸,但是并没有过多的涵盖对图片的细节处理,只是简单地实现了图片大小的放缩. 思维导图如下: 效果 ...

  4. for...in 与 for...of

    在js中, 对于Object,一般for...in 来进行迭代,不能使用for...of     // let obj = {a:1,b:2} for(let i of obj){console.lo ...

  5. 前端常用资源地址: http://www.htmleaf.com/

    前端常用资源地址: http://www.htmleaf.com/

  6. 直方图匹配原理与python、matlab实现

    直方图匹配本质上是让两幅图像的累积直方图尽量相似,累积直方图相似了,直方图也就相似了. 把原图像img的直方图匹配到参考图像ref的直方图,包括以下几个步骤: 1. 求出原图像img的累积直方图img ...

  7. NOIp2018D1T2 货币系统【分析&完全背包】

    题目传送门 看到题目瞬间想起某凯的疑惑,感觉不会做....然后观察样例可以知道,去掉原来货币系统中能够被其他币值凑出来的数就是答案(样例分析法),然后就完事了(huaji). 简单理解一下吧: 首先, ...

  8. C++学习笔记-模板

    模板把函数或类要处理的数据类型参数化,表现为参数的多态性,称为类属.模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为. 什么是模板 类属--类型参数化,又称参数模板 使得程序(算法 ...

  9. Oracle-DDL 3- 触发器

    DDL-数据定义语句: 四.触发器 -- 触发器(trigger),与某些特定的操作绑定,当达到触发条件后会自动触发--主要用来将某些操作的过程记录下来,或者阻止某些非法的操作,保护数据 /*触发条件 ...

  10. java解析json字符串详解(两种方法)

    一.使用JSONObject来解析JSON数据官方提供的,所以不需要导入第三方jar包:直接上代码,如下 private void parseJSONWithJSONObject(String Jso ...