java中数值类型计算时是多地址,变量值会变换

简介: java中数值类型计算时是多地址,变量值会变换

最近又在回头复习java基础,在运算符优先级中发现了自己理解的不足。

主要还是在自增和自减中有迷惑,今天的复习才发现,java中数值类型计算是多地址的,同一个变量的值可能在同一时刻并不相等

我们直接上代码看吧

package practice7;
public class Test {
   public static void main(String[] args) {
     int n = 11 , f = 12;
     f = f * (f - f) + f;
     f += ++f;  // 等价于f = f + ++f;
      if ( n++ > 11) {
        System.out.println(n);
      }else {
        System.out.println("是这个n:"  + n);
      }
      System.out.println(n + "======");
      System.out.println(f + "*****");
   }
}

这只是一个简单的优先级运算,先自行猜测运算结果,我猜测 f 的输出是26,但发现和实际运行结果有所偏差。

运行结果:

20190612004750832.png


这里就需要我们在上面提到的一句话来解释了java中数值类型计算是多地址的,同一个变量 f 的值在同一时刻并不相等,先++的 f 已经是13,而 f 本身还是12


f += ++f; // 等价于f = f(12) + ++f(13);


这样一来,对于运行结果就有了一个明确的理解。

推荐一个不错的博文:java 操作符详解,看后有很大的收获!

目录
相关文章
|
30天前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
25 0
|
1月前
|
Java
java中的泛型类型擦除
java中的泛型类型擦除
13 2
|
1月前
|
存储 Java
Java 编程实例:相加数字、计算单词数、字符串反转、元素求和、矩形面积及奇偶判断
Java中相加两个数字可通过简单赋值实现,如`int sum = x + y;`。若要用户输入数字相加,可使用`Scanner`类读取。计算单词数,可使用`split()`方法或`StringTokenizer`类。反转字符串,可用`for`循环或`StringBuilder`的`reverse()`方法。计算数组元素总和,可遍历数组累加。矩形面积通过长度乘以宽度得出。判断奇偶性,利用模2运算或位运算检查最低位。更多内容,可关注微信公众号`Let us Coding`。
49 0
|
1月前
|
存储 Java
JAVA字符串与其他类型数据的转换
JAVA字符串与其他类型数据的转换
27 4
|
2天前
|
存储 Java
JAVA变量类型
JAVA变量类型
9 0
|
7天前
|
存储 算法 安全
什么是Java泛型类型?
【4月更文挑战第13天】
12 0
什么是Java泛型类型?
|
13天前
|
Java
Java 16 新玩法:instanceof 升级版,让类型检查更精准
Java 16 新玩法:instanceof 升级版,让类型检查更精准
13 0
|
13天前
|
存储 监控 安全
泛型魔法:解码Java中的类型参数
泛型魔法:解码Java中的类型参数
33 0
泛型魔法:解码Java中的类型参数
|
1月前
|
存储 安全 Java
Java变量类型
Java变量类型
8 0
|
1月前
|
存储 监控 安全
Java基于物联网技术的智慧工地云管理平台源码 依托丰富的设备接口标准库,快速接入工地现场各类型设备
围绕施工安全、质量管理主线,通过物联感知设备全周期、全覆盖实时监测,将管理动作前置,实现从事后被动补救到事前主动预防的转变。例如塔吊运行监测,超重预警,升降机、高支模等机械设备危险监控等,通过安全关键指标设定,全面掌握现场安全情况,防患于未然。
148 5