博客
关于我
java面试题之++i与i++与运算符优先的问题
阅读量:394 次
发布时间:2019-03-05

本文共 1488 字,大约阅读时间需要 4 分钟。

Java面试题解析

1. 自增变量的理解

代码分析
public static void main(String[] args) {    int i = 1;    int j = i++;    int k = i + ++i * i++;    System.out.println("i=" + i + ",j=" + j + ",k=" + k);}
执行步骤
  • i = 1:初始化i为1。
  • j = i++:j取i的值1,i自增至2。
  • k = i + ++i * i++
    • 先执行++i,i变为3。
    • 然后计算i++,i变为4,返回3。
    • 计算k = 2 + 3 * 3 = 11
  • 结果解析
    • i=4,j=1,k=11。

    2. 循环中的自增变量

    代码分析
    public static void main(String[] args) {    int x = 0;    int y = 0;    int k = 0;    for (int z = 0; z < 5; z++) {        if ((++x > 2) && (++y > 2) && (k++ > 2)) {            x++;            ++y;            k++;        }    }    System.out.println(x + "," + y + "," + k);}
    执行步骤
  • z=0:x=1,y=0,条件不满足。
  • z=1:x=2,y=0,条件不满足。
  • z=2:x=3,y=1,条件不满足。
  • z=3:x=4,y=2,条件不满足。
  • z=4:x=5,y=3,k=1,条件不满足。
  • 结果解析
    • x=5,y=3,k=1。

    3. 运算符优先级

    代码分析
    public static void main(String[] args) {    int x = 10;    int y = 10;    System.out.println("x+y=" + x + y);    System.out.println("x*y=" + x * y);    System.out.println("x/y=" + x / y);}
    结果解析
    • x+y=20,x*y=100,x/y=1。

    4. i++的坑

    代码分析
    @Testpublic void testCount() {    int count = 0;    int y = 0;    for (int i = 1; i <= 10; i++) {        y = count++;    }    System.out.println(y);}
    执行步骤
  • 每次循环,y被赋值count的值。
  • count每次循环被自增,但赋值给y的是count的旧值。
  • 结果解析
    • 输出y=9。
    改动后的代码
    @Testpublic void testCount() {    int count = 0;    int y = 0;    for (int i = 1; i <= 10; i++) {        count = count++;    }    System.out.println(count);}
    执行步骤
  • 每次循环,count被赋值旧值,然后自增。
  • 最终count=10。
  • 结果解析
    • 输出count=10。

    总结

    这些问题主要考察对++运算符的理解,尤其是其在赋值和自增操作中的应用。通过仔细分析每一步操作,可以准确掌握Java中的自增变量行为,避免在面试中出现失误。

    转载地址:http://ngnwz.baihongyu.com/

    你可能感兴趣的文章
    OpenMMLab | S4模型详解:应对长序列建模的有效方法
    查看>>
    OpenMMLab | 【全网首发】Llama 3 微调项目实践与教程(XTuner 版)
    查看>>
    OpenMMLab | 不是吧?这么好用的开源标注工具,竟然还有人不知道…
    查看>>
    OpenMMLab | 如何解决大模型长距离依赖问题?HiPPO 技术深度解析
    查看>>
    OpenMMLab | 面向多样应用需求,书生·浦语2.5开源超轻量、高性能多种参数版本
    查看>>
    OpenMP 线程互斥锁
    查看>>
    OpenMV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    OpenObserve云原生可观测平台本地Docker部署与远程访问实战教程
    查看>>
    openoffice使用总结001---版本匹配问题unknown document format for file: E:\apache-tomcat-8.5.23\webapps\ZcnsDms\
    查看>>
    views
    查看>>
    OpenPPL PPQ量化(2):离线静态量化 源码剖析
    查看>>
    OpenPPL PPQ量化(3):量化计算图的加载和预处理 源码剖析
    查看>>
    OpenPPL PPQ量化(4):计算图的切分和调度 源码剖析
    查看>>
    OpenPPL PPQ量化(5):执行引擎 源码剖析
    查看>>
    openpyxl 模块的使用
    查看>>
    OpenResty & Nginx:详细对比与部署指南
    查看>>
    openresty 前端开发入门六之调试篇
    查看>>
    OpenResty(nginx扩展)实现防cc攻击
    查看>>
    openresty完美替代nginx
    查看>>
    Openresty框架入门详解
    查看>>