Java编程思想之三 操作符
在底层,Java中的数据是通过使用操作符来操作的。
3.2 使用Java操作符
操作符接收一个或多个参数,并生成一个新值。
操作符作用于操作数,生成一个新值。有些操作符可能会改变操作数自身的值,这被称为副作用
几乎所有的操作符都只能操作基本类型。
3.3 优先级
当一个表达式中存在多个操作符时,操作符的优先级就决定了各部分的计算顺序。
3.4 赋值
赋值使用的操作符=。它的意思时取右边的值把它赋值给左边。
基本类型存储了实际的数值,而并非指向一个对象的引用,所有在为其赋值的时候,是直接将一个地方的内容复制到另一边的。
对一个对象进行操作时,我们真正操作的时对象的引用。这种称为"别名现象",也是Java操作对象的一种基本方式。
3.4.1 方法调用中的别名问题
方法调用中,也会产生别名问题。
3.5 算术操作符
算术操作符包括:+、1、/、*、%
3.5.1 一元加、减操作
一元加、减与二元符号相同,不过只作用于一个数据。
3.6 自动递增和递减
这两个操作符各有两种使用方法,称为前缀式、后缀式。
前缀式:位于操作数前面,会先执行运算,在生成值。
后缀式:位于操作符后面,会先生成值,再执行运算。
3.7 关系操作符
关系操作符式一个boolean结果。
3.8逻辑操作符
逻辑操作符与(&&)、或(||)、非(!)能根据参数的逻辑关系,生成一个布尔值。
与(&&)、或(||)、非(!)只能作用于布尔值。
3.8.1 短路
一旦明确无误的确定整个表达式的值,就不再执行后面的部分。可以用return等方式返还。
3.9 直接常量
直接常量后面的后缀字符标志了它的类型。L(long),F(float),D(double)。
十六进制适用于所有整数数据类型,前缀0x或0X,后面跟随0-9或A-F、a-f。
e再java中代表10的幂次。1.39e-43就是1.39*10-43。
3.10按位操作符
按位操作符用来操作整数基本数据类型中单个"比特(bit)",二进制位。按位操作符会对两个参数中对应位执行布尔代数运算,并生成一个结果。
1&1=1,其他为0。
0|0=0,其他为1。
^000000=0,^111111=0,只要有1,不全是1,则输出都为1。
~1=0,~0=1。
按位操作可与=连用,但~十一元操作符,所以它不能。
3.11移位操作符
移位操作符操作运算对象也是二进制的“位”。移位操作符只可用来处理整数类型。左移位操作符(<<)能按照操作符右侧指定的位数将移位操作符左边的操作数向左移动(在低位补0)。“有符号”右移位操作符(>>)按照操作符右侧指定的位数将操作符左边的操作数向右移动。"有符号"右移位操作符使用"符号扩展":若符号为正,则在高位插入0,若符号为负,则在高位插入1。Java中增加了一种"无符号"右移位操作符(>>>),它使用"零扩展":无论正负,都在高位插入0。
移位可以于等号连用(<<== 或 >>== 或 >>>==)。
3.12 三元操作符 if-else
三元操作符也称为条件操作符。
?:和if-else效果一致。
3.13 使用操作符常犯的错误
使用操作符常犯的错误就是,即使对表达式如何计算有点不确定,也不愿意使用括号。
3.14 类型转换操作符
在适当的时候,Java会把一种数据类型自动转换为另一种数据类型。
执行窄化转换,编译器会强制我们进行类型转换,必须显示的进行。
对于扩展转换,则不必要显示的进行类型转换,因为新类型肯定能容纳原来类型的信息,不会照成任何信息的丢失。
Java编程思想之三 操作符的更多相关文章
- JAVA编程思想(2) - 操作符(一)
"在最底层,Java中的数据是通过操作符来操作的." 1. 使用Java操作符 -操作符接受一个或者多个參数,并生成一个新值,參数的形式与普通的方法调用不用,但效果是同样的.加号和 ...
- JAVA编程思想(2) - 操作符(二)
5. 直接常量 -一般来说,假设程序里使用了"直接常量",编译器能够准确的知道要生成什么样的类型.但有时候却是模棱两可的. 这时候须要我们对编译器进行适当的"指导&quo ...
- 《java编程思想》操作符
1. 自动递增和递减 递增和递减运算是两种相当不错的快捷运算,递减操作符是 "--",意为减少一个单位,递增操作符是 "++",意为增加一个单位.这两个操作符各 ...
- [Java编程思想-学习笔记]第3章 操作符
3.1 更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...
- 《 Java 编程思想》CH03 操作符
< Java 编程思想>CH03 操作符 在最底层,Java中的数据是通过操作符来操作的. 操作符 +,-,*,*,=与其他语言类似 几乎所有的操作符只能操作"基本类似" ...
- Java编程思想重点笔记(Java开发必看)
Java编程思想重点笔记(Java开发必看) Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...
- java编程思想
Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理 ...
- Java编程思想(11~17)
[注:此博客旨在从<Java编程思想>这本书的目录结构上来检验自己的Java基础知识,只为笔记之用] 第十一章 持有对象 11.1 泛型和类型安全的容器>eg: List<St ...
- Java编程思想 (1~10)
[注:此博客旨在从<Java编程思想>这本书的目录结构上来检验自己的Java基础知识,只为笔记之用] 第一章 对象导论 1.万物皆对象2.程序就是对象的集合3.每个对象都是由其它对象所构成 ...
随机推荐
- 24、vuex刷新页面数据丢失解决办法
刷新页面时候将state数据保存到localStorage里面: export default { name: 'App', created () { //在页面加载时读取localStorage里的 ...
- CSS 过渡动画
一.过渡 过渡(transition)是CSS3中具有颠覆性的特征之一,可以在不使用 Flash 动画或 JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果. 在CSS3 ...
- Linux中Nginx中添加自签证书TLS
创建自签证书TLS openssl req \ -newkey rsa: \ -x509 \ -nodes \ -keyout test.com.key \ -new \ -out test.com. ...
- 【MySql】Update批量更新与批量更新多条记录的不同值实现方法
mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_valu ...
- angular8 配置 测试环境打包指令 生成测试环境包指令
1.angular.json 文件中在architect 下添加 buildTest指令 距离位置 projects => (你的项目名称) => architect 下和 build 指 ...
- 【原】命令行增删改查阿里云 DNS
命令行解析阿里云 DNS 项目地址:https://github.com/liyongjian5179/alidns 首先需要获取阿里云账号账号的AccessKeyID及AccessKeySecret ...
- ELK快速入门(四)filebeat替代logstash收集日志
ELK快速入门四-filebeat替代logstash收集日志 filebeat简介 Filebeat是轻量级单用途的日志收集工具,用于在没有安装java的服务器上专门收集日志,可以将日志转发到log ...
- 性能测试基础---LR关联2
·LR中的关联函数详解.在LR中,用于关联的函数一般有以下四个:web_reg_save_param 是通过字符串查找的方式来查找获取数据.web_reg_save_param_ex 是通过字符串查找 ...
- 数据结构 - 顺序栈的实现 C++
顺序栈封装 C++ 使用C++对顺序栈进行了简单的封装,实现了栈的基本操作 封装方法: pop(),top(),size(),empty(),push() 代码已经过测试 #pragma once # ...
- Echo团队 对 待就业六人组 和 SkyReach 的Beta产品测试报告
班级:软件工程1916|W 作业:Beta阶段团队项目互评 团队名称:Echo 目录 对待就业六人组的Beta产品测试报告 对SkyReach的Beta产品测试报告 对待就业六人组的Beta产品测试报 ...