java中局部变量和全局变量 jvm原理(图形表示)static 的作用 常量:final

java中局部变量和全局变量

全局变量:有默认设置,没有给值也能使用,全局变量默认值 double型:0.0,Boolean型:false,int型:0,char型:空字符

局部变量:必须设置默认值,只有赋值了在栈中才有了自己的空间

​ 局部变量用来临时保存数据(在类的方法中定义),只能在当前方法中使用,没有默认值,所以必须赋值,在该方法当中不可以出现拥有相圃名称的局部变量;

只要不是static修饰的方法都是对象方法,必须new出来对象来使用。

Test中的非静态方法,在 Test1类中必须new出Test的对象才能使用add()的方法。

在这里插入图片描述

在这里插入图片描述

jvm原理

只有main方法才能调用其他的静态方法,是一个主方法,入口
image-20220324104316135

只有main方法(静态)才能调用其他的静态方法**

在这里插入图片描述
在这里插入图片描述

局部变量:方法调用完就失效**

static 的作用

(加static是类属性)

(不加static是对象属性) 都叫成员变量

static boolean don;  //(加static是类属性)

boolean don;//(不加static是对象属性) 都叫成员变量

使用Test对象属性时:Test中必须要有static age属性才能使用

Test test = new Test();
System.out.println("age:"+test.age);

使用成员变量时:必须new创建一个age的对象,才能使用age的值

注意:全局变量和局部变量同名时

当全局变量和局部变量同名时,main方法中调用该方法时,局部变量会覆盖全局变量。

在这里插入图片描述

常量:final

static final int count=10; //例如 PI=3.14不可变

值不可变,且定义的时候必须要给初始值,全局和局部都可以设置

和static资源一样,不需要new对象出来时才使用。

注意:局部常量也存在常量池中,堆中的方法中有常量(例final int a)存着的是a的地址,值在常量池中。
特点:

  1. 使用finnal该关键字来定义常量

  2. 常量定义时必须赋值

  3. 值一旦定义不可修改

  4. 用大写定义常量,多个单词时用下划线来衔接

例如:对象里面的局部常量调取过程
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JVMJava虚拟机)是Java程序的运行环境,负责将Java字节码转换成机器码,并在内存执行。在JVM局部变量全局变量在内存有不同的分布方式。 局部变量是定义在方法内部或代码块内部的变量,它的生命周期只存在于方法或代码块执行期间。当方法或代码块执行结束后,局部变量就会被销毁。局部变量的存储分布在栈内存。 栈内存是JVM用来存储方法调用的数据和局部变量的地方。当一个方法被调用时,JVM会为该方法创建一个栈帧,栈帧包含了方法参数、返回值、局部变量以及方法执行的状态信息。局部变量在栈帧以变量的形式存储,并且在方法调用结束后栈帧会被销毁,从而局部变量也会被自动释放。 全局变量是定义在类或接口的变量,被整个类或接口所共享,其作用域在整个类或接口内部可见。全局变量的存储分布在堆内存。 堆内存是用于存储JVM的对象数据的地方。当使用new关键字创建一个对象时,对象会被分配在堆内存,并且全局变量也是存储在堆内存全局变量在对象创建后会一直存在,直到对象被垃圾回收器回收时才会销毁。 总结来说,局部变量的存储分布在栈内存,随着方法或代码块的执行周期而存在和销毁;而全局变量的存储分布在堆内存,随着对象的创建和销毁而存在和销毁。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值