首页 > 编程语言 >java中方法内的局部变量是在什么时候被创建的

java中方法内的局部变量是在什么时候被创建的

时间:2023-10-29 23:14:28浏览次数:56  
标签:java int 创建 void 局部变量 Demo test public

2023.10.29

1.不是局部变量在该方法被执行/调用时创建,而是应该为在该变量被声明并赋值时创建,可以理解为“当代码执行到该变量被赋值的代码时才被创建”。栈会为每个方法在运行的时候分配一块独立的栈帧内存区域,栈帧又包含“局部变量表”、“操作数栈”、“动态链接”以及“方法出口”四个部分。

Sec A:
public class Demo {
    public void test() {
        int a;
        int b = 5;
        int c = b + 4;
        a = 2;
    }
    public static void main(String[] args) {
        Demo demo = new Demo();
        demo.test();
    }
}

Sec B:
public class Demo {
    public void test() {
        int a;
        int b = 5;
        int c = b + 4;
    }
    
    public static void main(String[] args) {
        Demo demo = new Demo();
        demo.test();
    }
}

A和B的代码看上去是一样的,都是在test方法的第一行声明了一个int a,A在最后会给a赋值,就会将对应的常量入栈,然后以istore_指令存给对应的局部变量,而在代码B中,就没有这个操作。

标签:java,int,创建,void,局部变量,Demo,test,public
From: https://www.cnblogs.com/RynerLee/p/17796754.html

相关文章

  • javascript的一些API接口的使用
    1.blobhttpURL在编辑器中,有的情况下插入图片,会讲图片转成blob:http://localhost/***的这种形式。这种形式的URL实际数据是存放在浏览器的内存中。这种情况下如何读取这个URL的具体内容呢点击查看代码asyncreadStreamAndEncodeBase64(url){//发送请求并......
  • java 内存分配
    ......
  • java基础漏洞学习----SSTI漏洞
    java基础漏洞学习----SSTI漏洞Velocity模板注入Java中有以下这些常见的模板引擎:XMLTemplate,Velocity,CommonTemplate,FreeMarker,Smarty4j,TemplateEngine其中Velocity在Java中使用较多把以下内容用burpsuite的url编码#set($e="e");$e.getClass().forName("java.lang.Runti......
  • finalshell在sbt安装目录中使用下面命令创建一个Shell脚本文件,用于启动sbt:
    finalshell在sbt安装目录中使用下面命令创建一个Shell脚本文件,用于启动sbt:vim/usr/local/sbt/sbtlanguage-bash该脚本文件中的代码如下:#!/bin/bashSBT_OPTS="-Xms512M-Xmx1536M-Xss1M-XX:+CMSClassUnloadingEnabled-XX:MaxPermSize=256M"java$SBT_OPTS-jardirname$......
  • JAVA-10.30
    public/private#关键字public被称之为访问修饰符。public定义的方法表示任何类的任何方法都可以调用,public定义的字段语序程序中任何方法对其进行修改和读取。但是使用public字段会破坏封装,我们会经常需要让类的属性只能被所在的类自身来调用(比如学生类的个人信息,一般只......
  • SpringBoot简介&IDEA在线创建一个SpringBoot项目
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言SpringBoot项目创建有三种方式,分别是在线创建、使用Springinitializr快速创建、和改造Maven工程创建,本期讲的就是如何在线创建一个SpringBoot项......
  • Java基础 InetAddress
    publicstaticvoidmain(String[]args)throwsException{//address是IP的对象,也是一台电脑的对象InetAddressaddress=InetAddress.getByName("172.18.153.251");System.out.println(address.getHostName());System.out.println(address.getHostAddress()......
  • 设计模式—创建型模式之原型模式
    设计模式—创建型模式之原型模式原型模式(PrototypePattern)用于创建重复的对象,同时又能保证性能。本体给外部提供一个克隆体进行使用。比如我们做一个SjdwzMybatis,用来操作数据库,从数据库里面查出很多记录,其中很多记录改变很少。每次查数据库,把所有数据都封装一个对象,然后返回......
  • Optional.ofNullable()方法, 参数list或者map如果为null执行 ofNullable(创建个新对象
    Optional.ofNullable()方法举个栗子publicstaticvoidmain(String[]args){List<String>list=null;list.forEach(x->System.out.println(x));}工作中经常会遇到,查询返回空,如果没有判空处理,一不小心就会空指针异常。加上if判断处理也可以,但是jdk1.......
  • 创建一个自己的 Linux系统
    简单来说就是一个文件传递的机制,首先创建/安装一个硬盘,然后把前硬盘中的一部分文件先转移到Linux系统上,再通过Linux系统转移到创建的新硬盘,之后用虚拟机,把新硬盘装在其中,就可以在新硬盘上做到一些功能了前知识准备:Linux启动流程:1、首先Linux要通过自检,检查硬件设备有......