`

java用了中间缓存变量

    博客分类:
  • J2SE
阅读更多

 Java语法、语言特性与机制 2011-01-22 19:11:11 阅读0 评论0 字号:大中小 订阅 请问以下程序会输出什么?

  public class Test2 {
    public static void main(String[] args) {
      int j = 0;
      for (int i = 0; i < 100; i++) {
        j = j++;
      }
      System.out.println(j);
    }
  }

是0
因为java用了中间缓存变量的机制
j=j++;可换成如下写法。
temp=j; //j++结果
j=j+1; //左侧计算完成后自加
j=temp; //赋值
所以结果为0

分享到:
评论

相关推荐

    Java中的自增操作符与中间缓存变量机制

    我们来看这样一段程序: public static void main(String[] args){  int i, sum1, sum2;    i=0;...  sum1 = (i++)+(i++);...  System.out.println(sum1=+sum1);...  它的运行结果

    java 公式解析源码

    4. **性能优化**:对于大量计算,解析和求值过程的效率至关重要,可能需要优化解析算法或使用缓存机制。 5. **安全**:确保用户输入的公式不会导致恶意代码执行,比如防止SQL注入或执行系统命令。 总的来说,Java...

    80道Java面试题及答案

    volatile 在 Java 中用于标记变量,确保其在多线程环境中的可见性和有序性,但不保证原子性。以下是对 volatile 关键字及其相关知识点的详细解释: 1. **volatile 变量的可见性**: - 当一个线程修改了 volatile ...

    Java并发编程与高并发解决方案-学习笔记

    - `use` 和 `assign`: 使用和更新工作内存中的变量。 - `store` 和 `write`: 将工作内存中的变量写回到主内存。 - **堆与栈**: - **堆**: 动态分配,大小不固定,适合存放对象实例。 - **栈**: 存储速度快,大小...

    java并发编程常识

    对象的引用是存储在线程栈中的,而线程栈是为每个线程独立分配的,存储了线程的局部变量和执行方法时的中间状态数据。由于每个线程有自己的栈空间,因此局部变量的使用通常是线程安全的。 原子性 在并发编程中,...

    java代码优化大全

    - **合理使用缓存**:对于经常使用的字符串常量,可以通过静态变量的形式进行缓存,以减少重复创建带来的开销。 #### 三、优化循环结构 循环结构是程序中常见的控制流语句,不合理的循环结构会导致性能下降。例如,...

    java第一章复习

    字节码是一种中间代码,可以被Java虚拟机(JVM)解释执行,这意味着Java程序可以在任何安装了JVM的平台上运行,体现了“一次编写,到处运行”的理念。 ### 操作系统的作用与Java环境 操作系统是管理和控制计算机活动...

    适应java零基础与初学者的java学习笔记,总结了javaSE的知识点

    ### 适应java零基础与初学者的java学习笔记 #### Java基本语法 Java的基本语法是初学者接触Java语言的第一步,主要包括以下几个方面: 1. **关键字**:Java中有一些具有特殊含义的单词被称为关键字,例如`public`...

    技术分享-JAVA并发库解读

    - 处理器使用高速缓存读写缓冲区,这可能会导致加载(load)和存储(store)操作看起来出现乱序。 #### 重排序对多线程的影响 在多线程环境中,重排序可能会导致一些意料之外的结果,尤其是当涉及到共享变量时。...

    java线程编程方面-讲解.pdf

    Java通过volatile关键字来保证可见性,当一个变量被volatile修饰时,每次读取该变量前都会强制从主内存中读取最新的值。 **有序性**: 有序性是保证程序执行的顺序与代码中的顺序一致。在Java中,由于指令重排序,...

    java聊天系统局域网聊天系统

    例如,使用SSL/TLS协议进行安全套接层传输,防止中间人攻击。 七、数据库存储 为了持久化用户信息、聊天记录等数据,系统可能使用关系型数据库(如MySQL)或非关系型数据库(如MongoDB)进行存储。JDBC是Java访问...

    Java并发编程:volatile关键字解析

    例如,对于一个整型变量的自增操作,在没有额外的同步措施的情况下,并不是原子性的,因为它涉及到读取旧值、计算新值和写入新值三个步骤,任何中间步骤被打断都可能导致数据不一致。 2. **可见性问题**:当一个...

    java代码实现斐波那契数列输出第n个数

    对于n大于1的情况,我们使用两个变量`fib`和`prevFib`分别存储当前斐波那契数和前一个斐波那契数,通过循环计算出第n个数。 在Java开发工程师的笔试中,斐波那契数列是一个常见的题目,因为它可以考察候选人的逻辑...

    使用Java实现语言解释

    可以通过缓存常用表达式结果、使用编译器优化技术(如JIT)和优化中间代码来提升性能。 8. **调试支持**:为了解析器提供调试能力,需要实现断点、单步执行、变量查看等功能。这可以通过集成JDI(Java Debug ...

    JAVA-内存模型.docx

    栈是线程私有的,每个线程都有自己的栈空间,用于保存方法的局部变量和中间结果等。 #### 三、本机内存 除了堆和栈之外,Java程序还可能使用本机内存(Native Memory),这通常是指Java虚拟机之外的内存,例如直接...

    .NET和JAVA的比较

    然而,JAVA中的这些封装类实际上是引用类型,这意味着即使两个变量指向相同的值,使用“==”比较也可能得到false的结果。C#则通过重载操作符确保了基本类型之间的比较行为一致。 **4.4 函数指针与Delegate** C#...

    JVM内幕:java虚拟机详解

    - 快速类加载是指通过缓存机制来加速类的加载过程,避免重复加载相同的类。 9. **运行时常量池(Runtime Constant Pool)** - 运行时常量池包含了类或接口在编译期产生的各种字面量和符号引用。 10. **异常表...

Global site tag (gtag.js) - Google Analytics