zxpnet网站 zxpnet网站
首页
前端
后端服务器
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

zxpnet

一个爱学习的java开发攻城狮
首页
前端
后端服务器
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 大后端课程视频归档
  • 南航面试题
  • 并发编程

  • 性能调优

  • java8语法

  • lombok

  • 日志

  • 工具类

  • spring

  • mybatis

  • springboot

  • redis

  • zookeeper

  • springcloud

  • dubbo

  • netty

  • springsecurity

  • mq消息中间件

  • shiro

  • beetle

  • 模板引擎

  • jpa

  • 数据结构与算法

  • 数据库知识与设计

  • gradle

  • maven

  • bus

  • 定时任务

  • docker

  • centos

  • 加解密

  • biz业务

  • pigx项目

  • 开源项目

  • 品达通用权限项目-黑马

  • 货币交易项目coin-尚学堂

  • php

  • backend
  • javaee
shollin
2021-07-15
目录
面试题

理解i++

  • 面试题

# 面试题

/**
 * 变量表, 值栈
 * 赋值=,最后计算
 * =右边的从左到右加载值依次压入操作数栈
 * 实际先算哪个,看运算符优先级
 * 自增、自减操作都是直接修改变量的值,不经过操作数栈
 * 最后的赋值之前,临时结果也是存储在操作数栈中
 */
public class TestPlus {
	
	public static void main(String[] args) {
		int i = 1;
		i = i++;  // 步骤:i的值压入值栈,为1,i变量由1变成了2,最后又将值栈赋给变量i,因此i仍然为1
		int j = i++; // i的值压入值栈,为1,i变量由1变成了2,最后又将值栈赋给变量j,因此i变成了2,j为1
		int k = i + ++i * i++; // 先i的值压入值栈,为2, ++i i变量由2变成3 压入值栈, i++ i变量仍然为3,压入值栈,i再增1。值栈3*3+2结果为11
		System.out.println("i=" + i);  // 4
		System.out.println("j=" + j); // 1
		System.out.println("k=" + k); //11
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
image-20210715205416328 image-20210715205432211 image-20210715205448213

•赋值=,最后计算

•=右边的从左到右加载值依次压入操作数栈

•实际先算哪个,看运算符优先级

•自增、自减操作都是直接修改变量的值,不经过操作数栈

•最后的赋值之前,临时结果也是存储在操作数栈中

•建议:《JVM虚拟机规范》关于指令的部分

最近更新
01
国际象棋
09-15
02
成语
09-15
03
自然拼读
09-15
更多文章>
Theme by Vdoing | Copyright © 2019-2025 zxpnet | 粤ICP备14079330号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式