JVM层面的i++和++i——不一样的解答

直接上代码

public class Demo {
        public void testIPlus() {
            int i = 0;
            int j = i++;
        }

        public void testPlusI() {
            int i = 0;
            int j = ++i;
        }
        
}

查看字节码文件

public void testIPlus();
    descriptor: ()V
            flags: ACC_PUBLIC
            Code:
            stack=1, locals=3, args_size=1
            0: iconst_0
            1: istore_1
            2: iload_1
            3: iinc          1, 1
            6: istore_2
            7: return
            LineNumberTable:
            line 3: 0
            line 4: 2
            line 5: 7

public void testPlusI();
        descriptor: ()V
        flags: ACC_PUBLIC
        Code:
        stack=1, locals=3, args_size=1
        0: iconst_0
        1: istore_1
        2: iinc          1, 1
        5: iload_1
        6: istore_2
        7: return
        LineNumberTable:
        line 8: 0
        line 9: 2
        line 10: 7
        }

分析:先给出字节码含义
在这里插入图片描述

i++:

	 0: iconst_0//常量0
         1: istore_1//将常量0赋值给变量1即i
         2: iload_1//将第一个变量i压入栈
         3: iinc          1, 1//i自增1,这里栈中的i并没有变化
         6: istore_2//将栈中的i付给第二个参数即j

++i:

0: iconst_0 //常量0
1: istore_1//将常量0赋值给变量1即i
2: iinc          1, 1//i自增1,此时i还没有入栈
5: iload_1//将第一个变量i压入栈 此时i已经自增
6: istore_2//将栈中的i赋值给第二个参数即j

总结:i++先入栈,再在自己的空间中自增,不会引起栈中的变量变化,然后在返回
++i先自增,在入栈,然后出栈,栈中的值已经自增过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java是一种广泛使用的面向对象编程语言,具有跨平台特性,可以在不同的操作系统上运行。它是一种高级语言,比较易于学习和使用。 JVM(Java虚拟机)是Java程序的执行环境,它将Java字节码转换为机器码,并负责运行和管理Java应用程序。JVM的主要功能包括内存管理、垃圾回收、线程管理和安全控制。通过JVM,Java程序可以在不同的操作系统上运行,实现了"一次编写,到处运行"。 XSS(跨站脚本攻击)是一种常见的安全漏洞,攻击者通过在网页中插入恶意脚本,以获取用户的敏感信息或进行恶意操作。Java可以通过一些安全机制来防范XSS攻击,比如对用户输入进行良好的过滤和验证,禁止直接在页面上执行用户输入的脚本,使用安全的编码方式等。 在Java中,可以使用一些安全框架和技术来防范XSS攻击,比如使用Web Application Firewall(WAF)来过滤恶意脚本,使用XSS过滤器对用户输入的数据进行过滤和转义,使用安全的输出方式来输出用户数据,如使用JSTL的<c:out>标签等。 此外,使用合适的编程实践和安全规范也是防范XSS攻击的重要措施。比如不信任用户输入,对用户输入的数据进行验证和过滤,使用安全的API和函数来处理用户数据,禁止直接拼接用户输入的字符串等。 总之,Java是一种强大的编程语言,通过JVM可以实现跨平台的部署,同时可以使用一些安全机制和编程实践来防范XSS攻击,保护用户的隐私和安全。对于开发人员来说,了解和应用这些安全技术和措施是很重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值