您的位置 首页 java

愉快地学Java语言:第二章基本程序设计 第2讲

导读

本文适合Java入门,不太适合Java中高级软件工程师。

本文以《Java程序设计基础篇》第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述。

本篇文章只是这个系列中的一篇,如果你喜欢这种讲解方式,或者觉得从中能学到知识,可以关注我,以便查阅本系列其他文章。

本文是第二章的第2讲,如果想看第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这种表示法,那么它是什么呢?

它是科学记数法,用 aX10 b 的形式表示浮点型直接量。

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讲

文章地址:https://www.zhihuclub.com/179452.shtml

关于作者: 智云科技

热门文章

网站地图