操作符比较简单,这里只点一下注意事项和要点,请牢记。

操作符接受一个或多个参数,并生成一个新值。

Java中,几乎所有的操作符都只能操作基本类型。

例外是 = == 和 !=,它们可以操作所有的对象。此外,String类支持+和+=。

1.赋值 =

基本类型存储了实际的数值,所以为基本类型变量赋值是将一个地方的内容赋值到变量所表示的地址。

为对象赋值时,实际操作的是引用。我们如下图所示,假设T1和T2是同一个类的两个对象的引用,分别指向各自的对象。开始如A所示,当执行赋值T1=T2后,如B所示,可以看到,引用T1和T2都指向了T2指向的对象,而T1指向的对象却无法再访问了,这种现象叫做别名现象。

如何避免别名现象呢?

可以使用这种方式赋值,T1.length=T2.length,T1.width=T2.width,可以保证两个对象彼此独立。但是这违背了面向对象的设计原则。

与此相似,当向一个方法传递对象时,实际上传递的也是引用,也会造成别名问题。

2.算数操作符

二元操作符:+ - * / % += -= *= /=

一元操作符:+ -

一元减号用于转变数据的符号。一元加号只是为了与一元减号相对应,它唯一的用处是将较小的类型提升为int。

3.自增和自减

有前缀式和后缀式两种,是除了涉及赋值的操作符以外,唯一具有副作用的操作符。

4.关系操作符

关系操作符生成布尔结果,计算的是操作数中的值之间的关系。

关系操作符:<  >  <=  >=  ==  !=

==和!=适用于所有的基本数据类型,其他比较操作符不适用于布尔类型。

基本类型之间的比较使用 == 和 != 即可。

当比较两个对象的实际内容时,必须使用所有对象都适用的equals()方法(不适用于基本类型),使用 == 和 != 比较的是对象的引用。

注意:equals()默认行为是比较引用,可以进行对象实际内容的比较是因为在相关类库中做了覆盖,因此当我们创建自己的类时,必须在类中覆盖equals()方法。

5.逻辑操作符

逻辑操作符:&&  ||  !

根据参数的逻辑关系,生成一个布尔值。

只能应用于布尔值。

不可以将非布尔值当做布尔值在逻辑表达式中使用。

具有短路性质。

6.直接常量

有时候编译器不知道创建什么样的类型,可以用与直接常量相关的字符来指导编译器。

如 0xff,0177,100f,100L,10D等。

指数的表示方法:1.39E-43f。

7.按位操作符

按位操作符:&  |  ~  &=  |=  ^=

操作位。

8.移位操作符

移位操作符:<<  >>  <<=  =>>

注意:对char,byte和short类型的数值进行移位处理前,会将它们转换成int类型,而且得到的结果也为int类型。只有数值右端的低5位有用(int值的范围)。同理,long类型的数值进行移位操作后,得到的结果右端的低6位有用。

9.三元操作符

三元操作符:  ? :

10.字符串操作符

字符串操作符: +  +=

用以连接不同的字符串。

如果表达式以一个字符串起头,后续的所有操作数都必须是字符串型,

技巧:有时会用一个空的String + 基本类型变量,以执行对基本类型的字符串的转换,不用显示地调用Integer.toString()。

11.类型转换

截尾:将一个浮点值转换为整型值时,会舍去小数部分。

舍入:想在将一个浮点值转换为整型值时进行四舍五入的操作,要使用java.lang.Math()中的round()方法。

round方法是java.lang的一部分,不需要额外导入。

提升:对基本数据执行算数运算或者按位运算时,只要类型比int小(char,byte,short),运算前就将其自动转换为int,结果也为int类型。一般而言,表达式中出现的最大的数据类型决定了表达式最终结果的数据类型。如果想把结果赋给较小的数据类型,需要使用类型转换,这可能造成信息丢失。

12.Java没有sizeof

C和C++中使用sizeof()的最大原因是为了移植。因为不同数据类型在不同机器上可能有不同的大小,在进行一些与存储空间有关的运算时,必须知道具体类型有多大,sizeof()可以实现。

Java中数据类型的大小固定,在所有机器中大小相同,因此不需要sizeof(),它已经被设计在语言中。

Java之路(二) 操作符的更多相关文章

  1. JAVA之路(二)

    学道酬勤,这是第二次学习JAVA,感觉如醍醐灌顶一样,理解很多思想和道理. 本博只是自己对JAVA的一些理解,具体定义以及用法百科里有. 我为什么在博客园内记录自己的学习过程呢,因为我想有人知道我在学 ...

  2. Java之路——名词解释(一)

    一.开篇 许多人在初接触Java的时候,都会被各种Java的英文缩写名词给弄得头晕脑胀.看一个技术,内容里又会有一堆其他的技术名词,看了半天不知所云.尝试去查一下这些名词的解释,除了非常学术性的解释之 ...

  3. Java之路——敬JAVA初学者(作者:MoMo)

    作为一名大四的毕业生,大学三年过,有得有失.作为一个喜欢编程,喜欢JAVA的人,自学其实是一件美事,很有意思的事.要是能再找个女朋友一起学.嘿嘿,就不枉在大学走了一遭啊!    要离开学校了,还是想留 ...

  4. Java之路——环境配置与编译运行

    本文大纲 一.开篇 二.JDK下载 三.JDK安装 四.环境配置 五.初识Java编译 六.Java与Javac 七.第一个Java程序 八.总结 九.参考资料 一.开篇 通过对之前Java之路的了解 ...

  5. Java之路 ——初识Eclipse

    零.大纲 一.前言 二.获取Eclipse 三.运行Eclipse 四.创建及运行第一个Java Project 五.界面介绍 六.如何调试 七.获取插件 八.Eclipse 快捷键 九.总结 一.前 ...

  6. Java从零开始学二十九(大数操作(BigIntger、BigDecimal)

    一.BigInteger 如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作. 不可变的任意精度的整数.所有操作中 ...

  7. Java入门指南-03 操作符与表达式

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

  8. Java之路——初识Eclipse

    零.大纲 一.前言 二.获取Eclipse 三.运行Eclipse 四.创建及运行第一个Java Project 五.界面介绍 六.如何调试 七.获取插件 八.Eclipse 快捷键 九.总结 一.前 ...

  9. 实战Java虚拟机之二“虚拟机的工作模式”

    今天开始实战Java虚拟机之二:“虚拟机的工作模式”. 总计有5个系列 实战Java虚拟机之一“堆溢出处理” 实战Java虚拟机之二“虚拟机的工作模式” 实战Java虚拟机之三“G1的新生代GC” 实 ...

  10. Java设计模式(二) 工厂方法模式

    本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...

随机推荐

  1. 【枚举Day1】20170529-2枚举算法专题练习 题目

    20170529-2枚举算法专题练习 题解: http://www.cnblogs.com/ljc20020730/p/6918360.html 青岛二中日期 序号 题目名称 输入文件名 输出文件名 ...

  2. LJ 5月6日A组考试考试题解

    [题目] T1(L2837) 晚餐队列安排 [题面] 为了避免餐厅过分拥挤,FJ要求奶牛们分2批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按FJ的设想,所有第2批就餐的奶牛排在队尾,队伍的前半部分 ...

  3. 新年的展望,2018 hello world~

    虽然离$2017$到$2018$的跨年已经过去很久了,但还是想写点东西试图拯救一下最近有些颓势的自己~ $2017$对我来说是意义重大的一年,这一年里,我有欢笑也有泪水,有收获也有挫折,有坚强也有脆弱 ...

  4. 【洛谷P1491】集合位置

    题目大意:求给定的一张无向带权图的次短路. 题解:先跑一遍 spfa 求出从起点到终点的最短路,记录路径.接着枚举删边,并重新跑 spfa,统计最小值即可. 至于为什么 dp 做法不行,暂时还不清楚. ...

  5. (转)Maven学习总结(八)——使用Maven构建多模块项目

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(八)——使用Maven构建多模块项目 在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为doma ...

  6. Hadoop生态圈-flume日志收集工具完全分布式部署

    Hadoop生态圈-flume日志收集工具完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   目前为止,Hadoop的一个主流应用就是对于大规模web日志的分析和处理 ...

  7. python---补充django中文报错(2),Django3.5出错

    今天是要Django3.5设置项目,结果出现中文报错,虽然之前分析过py2.7的报错原因,但是在py3之后reload不在使用,需要引入: from importlib import reload 但 ...

  8. HDU 3389 阶梯博弈变形

    n堆石子,每次选取两堆a!=b,(a+b)%2=1 && a!=b && 3|a+b,不能操作者输 选石子堆为奇数的等价于选取步数为奇数的,观察发现 1 3 4 是无法 ...

  9. 【转载】视频CDN技术原理与流程说明

    视频CDN专为移动互联网视频内容分发量身定做的一套自主研发的分布式平台,该平台以深圳为中心,分布在全国各地BGP机房的服务器为边缘节点,汇聚中国电信.中国联通.中国移动.中国教育网等运营商网络资源,构 ...

  10. 阿里云centos7.3安装lamp环境

    参考文档:http://www.jb51.net/article/96649.htm http://m.blog.csdn.net/qq_33813365/article/details/766337 ...