一、赋值操作符

在 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. 客户端连接oracle11出现提示ORA-12514:错误解决方法

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

  2. 阶段3 3.SpringMVC·_06.异常处理及拦截器_4 SpringMVC拦截器之介绍和搭建环境

    拦截器可以有多个 搭建环境 不用改,直接finish 复制原来项目的 依赖的包也复制过来 web.xml配置前端控制器 springmvc的配置文件 先创建对应的文件夹 分别创建java和resour ...

  3. 2019.12.04 ADT on eclipse 配置篇

    今天看JerryWang的简书博客https://www.jianshu.com/p/74ad8e4bbc49 ,SAP GUI 和ADT是互为补充的关系,有很多SAP新出的技术都没有办法在GUI上开 ...

  4. iOS类型的转换

    1.NSData和NSString的转换: - (void)viewDidLoad { [super viewDidLoad]; // 字符串 NSString *str = "; NSLo ...

  5. Zemax评价函数经验小结

    2.4 风景透镜 为了说明一个简单的评价函数问题,我们演示一个真实风景透镜实例,这个风景镜有两个局部最优解,它大概是历史上第一个照相透镜,具有合理的大视场.它一开始是在一个成像暗箱(camera ob ...

  6. DataTable.Select筛选过滤数据返回DataRow[]转为DataTable添加到DataSet

    问题还原,如图所示,我们要筛选所有SHDP 为北京翠微KR的数据. 1. 筛选DataTable微软为我们提供了一个方法DataTable.Select(),其用法如下: 1)  Select()—— ...

  7. <转>常规测试方法

    功能测试 1. 安装测试: 安装过程中对于缺省安装目录及任意指定的安装目录,是否都能正确安装: 若是选择安装,查看能否实现其相应的功能: 在所有能中途退出安装的位置退出安装程序后,验证此程序并未安装成 ...

  8. WIN10远程协助无法控制的解决方法

    这个问题比较常见小编整理的解决方法如下: 方法一:用QQ远程协助对方电脑,需要QQ告诉对方右键单击计算机(这台电脑)点管理打开计算机管理界面选择本地用户和组,再选择用户,右侧会出现所有的本地用户,包括 ...

  9. C++学习笔记-引用

    引用是C语言中没有,而在C++中又很重要的一个概念,通过应用,可以得到变量本身,相对于得到变量的值而言,有更大的操作空间. 普通引用 变量的本质 变量名实质上是一段连续存储空间的别名,是一个标号 程序 ...

  10. java文件操作解析

    转载:http://blog.csdn.net/cynhafa/article/details/6882061 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实 ...