静态成员变量(回收机制)

StaticDemo 和 MyDemo

package android.java.oop13;

class MyDemo {

    /**
* 定义一个静态变量
*/
public static String country = "中国"; } public class StaticDemo { public static void main(String[] args) { /**
* 能够使用 类名.静态成员变量,是因为静态成员变量是存放在(方法区(数据共享区) 的 静态区中)
* 属于共享数据,不需要实例化对象,直接拿类名访问静态成员变量即可
*/
System.out.println("country:" + MyDemo.country); } }

执行结果:

对应以上案例的内存图:

回收机制:

  静态成员变量的回收机制是:随着类的加载而加载,随着类的消失而消失,由于类需要非常长时间的不使用,不利用,不关联,才有可能会被回收机制回收,

所以静态成员变量的生命周期特别长,除非是共享数据,否则不建议使用静态;




成员变量:

Demo 与 DemoTest

package android.java.oop13;

class Demo {

    /**
* 定义一个普通成员变量name
*/
public String name; // 定义此方法就是为了打印name
public void showName() {
System.out.println(this.name);
} } public class DemoTest { public static void main(String[] args) { Demo demo = new Demo(); demo.name = "许文强"; demo.showName(); } }

执行结果:

以上案例对应内存图:

回收机制:

  成员变量:是随着对象的实例化而存在,随着对象的回收而消亡,所以比静态成员变量生命周期要短一些,建议非共享数据,定义成 成员变量;




局部变量:

Demo 与 DemoTest:

package android.java.oop13;

class Demo {

    public void showName() {

        /**
* 定义局部变量
*/
String name = "谢晓峰"; System.out.println(name);
} } public class DemoTest2 { public static void main(String[] args) { Demo demo = new Demo(); demo.showName(); } }

执行结果:

以上案例对应的内存图:

回收机制:

   局部变量:局部变量的回收机制 生命周期 现对于 静态成员变量/成员变量/ 来说是最短的;

   因为 方法一旦弹栈/出栈 此局部变量就会被回收了;

    

Android-Java-静态成员变量&成员变量&局部变量(内存图&回收机制)的更多相关文章

  1. 【java基础】成员变量和局部变量

    成员变量和局部变量 根据定义变量位置的不同,可以将变量分为成员变量和局部变量        成员变量是在类范围内定义的变量        局部变量是在一个方法内定义的变量   成员变量可以分为:   ...

  2. java中的成员变量和局部变量区别

    1.作用域不同 成员变量的作用域在整个类内部都是可见,可用的: 局部变量的作用域仅限于定义它的方法,不能被其它方法调用: 2.初始值不同 java会给成员变量一个初始值,初始值为0: java不会给局 ...

  3. Java学习笔记十五:Java中的成员变量和局部变量

    Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量 ...

  4. java 静态代码块 代码块 构造函数 静态成员变量 成员变量的初始化顺序

    没有父类的情况 1,静态代码块-->静态成员变量-->成员变量(实例属性)-->代码块-->构造函数 2, 静态代码块 和 静态成员变量 只会初始化一次 有父类的情况 1,父类 ...

  5. Java的类成员变量、实例变量、类变量,成员方法、实例方法、类方法

    总是被这些相似的概念搞晕,查阅了资料后做个小总结,以变量为例,方法辨析类似. 1.多胞胎名字汇总辨析 成员变量和成员方法是范围最大的定义,提到成员变量就可以理解成你所定义在一个类体中的各类变量的统称, ...

  6. 【java基础】成员变量和局部变量02

    成员变量和局部变量(2) 成员变量的初始化和内存中的运行机制         当系统加载类或者创建类的实例的时候,系统会自动为成员变量分配内存空间,并自动指定初始值. package object; ...

  7. 在实例中说明java的类变量,成员变量和局部变量

    java中一般有三种变量:类变量,成员变量和局部变量.类变量 1.下面先看类变量,看下面这个例子 public class Demo6{ public String name; public int ...

  8. 【Java基础】成员变量和局部变量的区别

    在类中的位置不同 成员变量:在类内部方法外部 局部变量:在方法体内部定义的或者方法的参数中定义的在内存中的位置不同 成员变量:在堆内存,有初始化值,byte,short,int,long->0, ...

  9. Java构造方法、成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的?

    [Java笔试真题]:构造方法.成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的? [解答]:当类第一次被加载的时候,静态变量会首先初始化,接着编译器会把实例变量初始化为默认值,然后执行构 ...

随机推荐

  1. java UCnter 单点登录 对接。

    前提 PHP项目要部署成功.论坛能正常访问. 先配置 应用 1.是论坛应用 4.是java服务器,也就是你java登录的项目. 必须通信成功. .主应用IP就是你java项目的入口. 例如:http: ...

  2. 去“BAT”这样面试,拿到offer的几率是80%(转)

    一.概述面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:“面试官为什么会这 ...

  3. ubuntu 从零安装tf-serving环境和opencv

    参考官网:https://www.tensorflow.org/serving/setup 首先是安装gprc: pip install grpcio 然后发现没有安装pip,报错:sudo: pip ...

  4. CSS 表单

    输入框前有图片 老板让你实现在输入框前有图片的功能.老板觉得用图片代替文字更有说服力. 要实现这样的功能很简单,它的原理是将图片放在内边距内. 代码 1 2 3 4 5 6 7 8 9 10 11 1 ...

  5. VMware12上安装CentOS7无法上网问题

    常安装使用VMware的搭建集群环境,VMare安装后虚拟机默认的是自动获取IP,有时候用的过程中突然XSHELL中断或者需要固定IP上网,遇到几次居然,但忘了步骤,总结一下,省的每次去找资料 环境配 ...

  6. python爬虫知乎问答

    python爬虫知乎问答 import cookielibimport base64import reimport hashlibimport jsonimport rsaimport binasci ...

  7. AFNetWorking 源码粗浅理解

    最近在看AFNetWorking的源码,整理出自己的一点思路.先从一个最简单的网络请求看: NSString *urlStr = [NSString stringWithFormat:@"h ...

  8. [leetcode]152. Maximum Product Subarray最大乘积子数组

    Given an integer array nums, find the contiguous subarray within an array (containing at least one n ...

  9. node.js中path路径模块的使用

    path模块是node.js中处理路径的核心模块.可以很方便的处理关于文件路径的问题. join() 将多个参数值合并成一个路径 const path = require('path'); conso ...

  10. Quartz.Net进阶之二:关于触发器的更多信息

    与作业一样,触发器相对容易使用,但是在您可以充分利用Quartz.NET之前,确实需要了解和理解各种可自定义的选项. 此外,如前所述,您可以选择不同类型的触发器来满足不同的调度需求. 1.常见触发器属 ...