File tree Expand file tree Collapse file tree 1 file changed +46
-3
lines changed
Expand file tree Collapse file tree 1 file changed +46
-3
lines changed Original file line number Diff line number Diff line change 4848 但是,从输出的第二行我们可以发现,这东西的结果是不同的。后缀用法中,结果` y ` 为操作数` x1 ` 的原值;前缀用法中,结果` z ` 为操作数` x2 ` 在自增后的新值。当然,如果你觉得你搞不清楚这个东西,那么,像这样分开写就是你最好的选择:
4949
5050 ``` java
51- int y = x1; x1++ ;
52- x2++ ; int z = x2;
51+ int y = x1;
52+ x1++ ;
53+ x2++ ;
54+ int z = x2;
5355 ```
5456
5557 别忘了,你们还是得熟悉这个呀,毕竟考试有可能会考,可以自己多试试哦!
@@ -107,9 +109,50 @@ System.out.print("a+b = " + a+b);
107109a+b = 12
108110```
109111
110- 为什么会这样呢?要注意的是,我们在优先级相同的情况下是从左往右算的,也就是说,` a+b ` 的结果并不先算的 ,先算的是` "a+b = " + a ` ,这是一个字符串拼接操作,结果是一个新字符串 ` "a+b = 1" ` 。然后这个字符串又和b相加,也是一个字符串拼接操作,于是就出现了这样的结果 ,所以这种时候一定要在后面的` a+b ` 加上一个小括号哦 ~
112+ 为什么会这样呢?要注意的是,我们在优先级相同的情况下是从左往右算的,也就是说,` a+b ` 的结果并不是先算的 ,先算的是` "a+b = " + a ` ,这是一个字符串拼接操作,这个东西的结果是一个新字符串 ` "a+b = 1" ` 。然后这个字符串又和b相加,也是一个字符串拼接操作,于是就出现了的结果 ` a+b = 12 ` ,所以这种时候一定要在后面的` a+b ` 加上一个小括号让它先计算哦 ~
111113
112114
113115
114116## 3 类型转换
115117
118+ 不知道大家有没有试过这样的运算:
119+
120+ ``` java
121+ System . out. println(23 / 5 );
122+ ```
123+
124+ 或许你期望的答案是` 4.6 ` ,但是程序就像爱情一样求而不得、模模糊糊。他只告诉你答案是` 4 ` ,却并没有告诉你精确答案。这是因为你是用两个int类型的数进行运算的,所以程序认为你的结果也应该是一个int类型的数,所以它只显示了答案的整数部分。
125+
126+ 为了得到精确的结果,你可以直接使用double类型的直接量,加上一个` .0 ` :
127+
128+ ``` java
129+ System . out. println(23.0 / 5 );
130+ ```
131+
132+ 我们前面已经学到浮点型直接量会是double类型的,而在一个二元运算中,其中一个是整数,另一个是浮点数时,Java会** 自动** 将整数转换为浮点型,再进行运算,在浮点运算里,浮点数的精确答案就能表示出来了。这就是Java的** 自动类型转换** 。
133+
134+ 你也可以用到** 强制类型转换** 的方式:
135+
136+ ``` java
137+ System . out. println((double )23 / 5 );
138+ ```
139+
140+ 我们前面已经学到整型直接量会是int类型的,` 23 ` 前面的` (double) ` 就把这个原本是int的23变成了double类型的数。之后就和上面的过程一样了。
141+
142+
143+
144+ 我们来概念性地总结一下:
145+
146+ 类型转换的过程是将一种类型转换为另一种数据类型的操作。大家还记得各种类型所能表示的数的范围吧,Java可以** 自动** 地将小范围类型拓宽为大范围的类型(为什么?),这就是** 自动类型转换** 。但是反过来则一定需要** 强制类型转换** ,比如` int p = (int)1.7; ` ,这会保留整数部分` 1 ` 作为结果赋值给int类型的变量` p ` 。
147+
148+
149+
150+ 以下是一些注意事项:
151+
152+ - 类型转换是不会改变被转换变量本身的类型的,只会改变变量在运算时使用的值。因为变量一经声明,数据类型是绝对不会改变的
153+
154+ ``` java
155+ double d = 4.5 ;
156+ int x = (int )d; // d is still 4.5
157+ ```
158+
You can’t perform that action at this time.
0 commit comments