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

StaticDemo 和 MyDemo

  1. package android.java.oop13;
  2.  
  3. class MyDemo {
  4.  
  5. /**
  6. * 定义一个静态变量
  7. */
  8. public static String country = "中国";
  9.  
  10. }
  11.  
  12. public class StaticDemo {
  13.  
  14. public static void main(String[] args) {
  15.  
  16. /**
  17. * 能够使用 类名.静态成员变量,是因为静态成员变量是存放在(方法区(数据共享区) 的 静态区中)
  18. * 属于共享数据,不需要实例化对象,直接拿类名访问静态成员变量即可
  19. */
  20. System.out.println("country:" + MyDemo.country);
  21.  
  22. }
  23.  
  24. }

执行结果:

对应以上案例的内存图:

回收机制:

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

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




成员变量:

Demo 与 DemoTest

  1. package android.java.oop13;
  2.  
  3. class Demo {
  4.  
  5. /**
  6. * 定义一个普通成员变量name
  7. */
  8. public String name;
  9.  
  10. // 定义此方法就是为了打印name
  11. public void showName() {
  12. System.out.println(this.name);
  13. }
  14.  
  15. }
  16.  
  17. public class DemoTest {
  18.  
  19. public static void main(String[] args) {
  20.  
  21. Demo demo = new Demo();
  22.  
  23. demo.name = "许文强";
  24.  
  25. demo.showName();
  26.  
  27. }
  28.  
  29. }

执行结果:

以上案例对应内存图:

回收机制:

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




局部变量:

Demo 与 DemoTest:

  1. package android.java.oop13;
  2.  
  3. class Demo {
  4.  
  5. public void showName() {
  6.  
  7. /**
  8. * 定义局部变量
  9. */
  10. String name = "谢晓峰";
  11.  
  12. System.out.println(name);
  13. }
  14.  
  15. }
  16.  
  17. public class DemoTest2 {
  18.  
  19. public static void main(String[] args) {
  20.  
  21. Demo demo = new Demo();
  22.  
  23. demo.showName();
  24.  
  25. }
  26.  
  27. }

执行结果:

以上案例对应的内存图:

回收机制:

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

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

    

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. Laravel线上布暑到linux的问题汇总

    1.直接报403错误 ,配置文件中增加: location / { try_files $uri $uri/ /index.php?$query_string; } 同时根目录不是指到项目名,而是指到 ...

  2. hadoop 二次排序的思考

    name sorce jx 10 gj 15 jx 20 gj 30 1. 二次排序 key如何定义 2. grouping 是不是一定要实现,不实现可以吗? 3. 二次排序的本质是什么 4. 如果以 ...

  3. 第四篇、Python文件处理

    1.文件操作 1) 文件操作流程 a. 打开文件,得到文件句柄并赋值给一个变量 b. 通过句柄对文件进行操作 c. 关闭文件 f=open('a.txt','r',encoding='utf-8') ...

  4. xcode 自动签名原理

    签名的核心就是provision profile要与当前的bundle id及本地的私钥相匹配. teamid:每个开发者账号都会对应一个teamid.企业的开发这账号除了对应一个teamid外,下面 ...

  5. ubuntu彻底卸载软件

    找到此软件名称,然后sudo apt-get purge ......(点点为为程序名称),purge参数为彻底删除文件,然后sudo apt-get autoremove,sudo apt-get ...

  6. MYSQL性能优化(3)

    优化数据库对象 1.优化表的数据类型 select * from tbl1 procedure analyse(16,256) ,会输出优化建议,结合情况优化 2.拆分表(仅Myisam) 2.1 纵 ...

  7. jQuery获取URL中的参数

    //获取URL地址栏中的参数 function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + &quo ...

  8. 移动端过禁止输入emoji表情实现方案

    最近手头上的项目有一个需求就是输入框不能输入表情,然后就各种在网上找资料,网上好多人给的方案是: str = str.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uD ...

  9. 360浏览器对CSS的补齐

    360浏览器对很多CSS不兼容,导致了很多代码显示不正常, 常见的解决方法: 很多人在源代码加了<meta content=\"IE=edge\" http-equiv=\& ...

  10. project1

    知识漏洞  有空就默写一下-.- [概念] 要好好理解并且背下来记住 MVC要分开,Servlet里面不处理计算的逻辑,只有调用函数(是不是变量传进来以后,调用都不能有呢?) clear map不能直 ...