语言求余和乘除优先级_愉快地学Java语言:第二章基本程序设计 第2讲
导读
本文适合Java入门,不太适合Java中高级软件工程师。
本文以《Java程序设计基础篇》第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述。
本篇文章只是这个系列中的一篇,如果你喜欢这种讲解方式,或者觉得从中能学到知识,可以关注我,以便查阅本系列其他文章。
本文是第二章的第2讲,如果想看第1讲,可以查看:
愉快地学Java语言:第二章基本程序设计 第1讲
8数值数据类型和操作
Java中有多少个数值类型,它们都是什么?
一共有六种数值类型,分类归纳为:
- 整数:byte,short,int,long
- 浮点数:float(单精度),doubl(双精度)
大家不禁会想标准IEEE754是什么?
IEEE 754 是美国电气电子工程师协会通过的一个标准,用于在计算机上表示浮点数。该标准已被广泛采用。Java采用32位IEEE 754表示float型,64位IEEE 754表示double型。
都支持哪些种类的操作呢?
支持加(+),减(-),乘(*),除(/),求余(或称取模,%)
要注意的运算要点有哪些呢?
- 当除数都是整数时,除法结果是整数,小数部分舍弃。
- 对于%,只有当被除数是负数时,余数才是负数。
- 操作符%通常用在正整数上,它也可用于负整数和浮点值。只有当被除数是负数时,余数才是负的。
- 两个浮点数值的相等测试并不可靠。应该测试两个浮点数的差小于某个阈值,来比较他们是否接近。
例:
double x =1.0-0.1-0.1
x==0.8//可能为false
此外,使用方法Math.pow(a,b)来计算a的b次幂。
9数值型直接量
前面我们了解了变量,那么下面的代码中出现的数字是什么呢?
int i =0;
它是直接量。直接量是一个程序中直接出现的常量值。
由于0数字,所以数值型直接量。
数值型直接量的要点包括:
- 数值型直接量包括:整型直接量,浮点型直接量。
- Long型的整型直接量要在数字后加字母L或l。
- 二进制整型直接量以0b或0B开头,例:0B1111
- 八进制整型直接量以0开头,例:07777
- 十六进制整型直接量以0X开头,例:0XFFFF
- 浮点型直接量要在数字后加字母F或f(folat型直接量),D或d(double型直接量)
整型直接量默认是int型的,指的是什么呢?
即,如果一个数字直接出现在代码中,其后没有字母,也不任何标志开头(0b,0B,0,0X开头),那么它表达整型值。
与此相似地,浮点型直接量默认情况下是double型的。
上面那个表格中,出现了3.4028235E+38这种表示法,那么它是什么呢?
它是科学记数法,用 aX10b的形式表示浮点型直接量。
2_3这种写法你见过吗?
它也表示数值型直接量。为了提高可读性,Java允许在两个数字之间使用下划线来表示数值型直接量。
10表达式求值以及操作符优先级
如何对表达式进行求值运算呢?
算数我们都会,其实算数运算规则也适用于表达式求值。
我们都知道,先算乘除,再算加减,那么有多个操作符的时候怎么算呢?
这涉及到运算符优先级的问题,先计算优先级高的,乘除优先级比加减优先级高。乘与除优先级相同,加与减优先级相同。
关于操作符的优先级可以列一个总表,但由于好多操作符目前还没有接触,所以暂且不列。
11增强赋值操作符
上面列举了所有的增强赋值操作符,那么为什么要使用它呢?
看下面这个例子:
int i = 10;
i = i - 1;
这个例子很简单,首先声明int型变量i,并初始化赋值10。然后,将i减1,再将结果赋给i。那么此时i的值是9.
有没有更简洁的写法呢?
当然有,i - = 1;
不过,也没简洁多少,只是少写了个字母i而已。
12自增自减操作符
看到命名,你想到了什么吗?
对了,操作符放到变量前面就是前置操作符,放到后面就是后置操作符。
有没有发现什么规律?
前置操作符使用变化后的值,后置操作符使用变化前的值。
例如,计算++i相当于计算i=i+1;这样i当前的值是原值加1后的结果。
13数值类型转换
什么是类型转换?
将一种数据类型的值转换为另一种数据类型的操作。
为什么要转换类型?
实际应用的需要,再者就是为了合理的存储数据。
先来看几个概念:
扩宽类型:将一个小范围类型的变量转换为大范围类型的变量。
缩窄类型:将一个大范围类型的变量转换为小范围类型的变量。Java自动扩宽数据类型,缩窄类型必须执行显示转换,如果不显示转换会出现编译错误。
能给个形象的比喻吗?
形象地说,扩宽类型就好比有11个人想进能容纳10个人的屋子,缩窄类型就好比能容纳10个人的屋子只进了9个人,前者无论如何也容纳不下第11个人,后者是对资源的浪费。
例如,显示转换
float f = 5.55f;
int i = (int)f;//此时i的值是5。
如果写成:float f = 5.55;呢?
那么一定会报编译错误,因为别忘了,浮点型直接量默认情况下是double型的,double精度高于float,double转换为float属于缩窄类型。
看到左侧的红叉了码,验证了我们的判断。把鼠标方在其上面,看看具体的信息:Type mismatch: cannot convert from double to float
那么在类型转换中还应该注意点什么呢?
- 类型转换中,被转换变量不会被改变。
- 形如x1 op= x2的增强赋值表达式,执行的实际是x1=(T)(x1 op x2),T是x1的类型。
- 浮点型转换为int,小数部分会被截掉。
14常见错误
如果赋给变量的值,超过它的存储范围,会怎么样呢?
这种情形被称为溢出。超过变量所能承载的最大值、最小值算溢出。然而Java不会给出警告或者报错。产生的结果会获让人觉得奇怪。
例如,int型变量能存储的最大值是2147483647,最小值是-2147483648
若有下面的赋值表达式:
int i = 2147483647 + 1;
那么此时i的值是-2147483648
若有赋值表达式:
Int i = -2147483648 - 1;
那么此时i的值是2147483647。
每天30分钟,坚持一个月就能为Java开发打下坚实的基础!努力学习吧!
语言求余和乘除优先级_愉快地学Java语言:第二章基本程序设计 第2讲相关推荐
- java for循环_愉快地学Java语言:第五章 循环
导读 本文适合Java入门,不太适合Java中高级软件工程师.本文以<Java程序设计基础篇>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述.本篇文章只是这个系列中的一篇,如果 ...
- esp8266接收到的数据如何存放到数组中_愉快地学Java语言:第七章 数组
导读 本文适合Java入门,不太适合Java中高级软件工程师.本文以<Java程序设计基础篇>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述.本篇文章只是这个系列中的一篇,如果 ...
- easyloging 获取日志文件名字_愉快地学Java语言:第十五章 断言与日志
导读 本文适合Java入门,不太适合Java中高级软件工程师.本文以<Java核心技术基础知识卷I>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述.本篇文章只是这个系列中的一篇 ...
- java语言说法不正确的是_下列有关Java语言描述不正确的是()。 - 问答库
问题: [单选] 下列有关Java语言描述不正确的是(). A . Java语言开发的程序与平台无关,即:用Java语言开发的程序可以在不同的操作系统下运行 B . Java采用完全面向对象的程序设计 ...
- java语言实现任何一种排序_请用java语言编写排序程序。
展开全部 参考代码如下,可以按需求自己修改import java.util.Date; public class SortThread { public static void main(String ...
- java方法区内存泄露_深入理解java虚拟机-第二章:java内存区域与内存泄露异常...
2.1概述: java将内存的管理(主要是回收工作),交由jvm管理,确实很省事,但是一点jvm因内存出现问题,排查起来将会很困难,为了能够成为独当一面的大牛呢,自然要了解vm是怎么去使用内存的. 2 ...
- java语言与其他语言的区别是_浅谈Java语言和其他语言的区别
计算机语言中,各种语言都有自己的优势与劣势.本人是在大学期间就学习Java的,听到了过多Java不好的地方,但是Java在近20年里何以独步天下呢?Java语言和其他的语言之间到底有什么区别呢? 学习 ...
- c语言使用求余方式的转化为二进制程序,C语言第三讲 程序结构 (下).ppt
<C语言第三讲 程序结构 (下).ppt>由会员分享,可在线阅读,更多相关<C语言第三讲 程序结构 (下).ppt(24页珍藏版)>请在人人文库网上搜索. 1.1,第三讲 程序 ...
- c语言求3个整数的平均数程序,c语言求余(c语言求任意三个数的平均值)
C语言提供了一个取余数的运算符%,称之为"模"运算符.只有两个整数之间才可以进行模运算!a % b 表示 用b来整除a,商整数,得到余数.如:5%3 = 2 4%3 =13%3 . ...
最新文章
- skyline B/S模式下脚本实现输出视频
- linux 内核生成
- 为什么我电脑进入睡眠后网络就断开了?(解决打开睡眠后的笔记本无法连接校园网的问题)
- file的getPath getAbsolutePath和getCanonicalPath的不同
- python约瑟夫环_Python实现约瑟夫环问题的方法
- html二级页面内容滑动,jQuery+CSS实现的网页二级下滑菜单效果
- 反向输出一个三位数(信息学奥赛一本通-T1031)
- [Chrome]查看内存使用命令
- MySQL用户管理和权限设置
- python36.dll下载_python36.dll
- 利用深度学习自动补全 Python 代码,这个开源项目有点牛逼
- IE 6里面当高度(height)小于9px时,高度会仍然是9px[解决办法]
- IP地址、子网掩码、有效子网数、有效主机数
- 平安人寿打造新一代年金保险产品:御享财富和御享金瑞
- 帆软报表参数传给网络报表_在报表中给session赋值实现报表间参数共享
- 图像增强(1-灰度级变换)—内涵MATLAB源码
- 《第一桶金怎么赚——淘宝开店创业致富一册通》一一1.1 创业者需具备的素质...
- 听音测试电脑软件,主观听音测试
- Mysql给一个大表加一列_MySQL 大表添加一列的实现
- 俞敏洪演讲:不要为眼前的得失而抓狂 zt
热门文章
- SQLITE_ERROR - table sap_capire_bookshop_books has no column named currency
- 一些能提高ABAP开发人员日常工作效率的ABAP小工具
- Angular Component TypeScript代码和最后转换生成的JavaScript代码比较
- promolike原型开发前后台打通
- 使用Hybris Commerce API返回当前客户持有的所有优惠券
- SAP UI5 ResponsiveGridLayout
- How change in Console is rendered back into UI
- CDS view delivered in CRM EHP4
- ABAP document read logic
- SAP CRM Service Order search Tool