黑马程序猿入学blog ...

假设这章节非常难懂的话应该返回去先看  JAVA_SE基础——10.变量的作用域

定义的位置上差别:


1. 成员变量是定义在方法之外,类之内的。

2. 局部变量是定义在方法之内。

作用上的差别:

1. 成员变量的作用是用于描写叙述一类事物的公共 属性的。

2. 局部变量的作用就是提供一个变量给方法内部使用而已。



生命周期差别:

1. 随着对象 的创建而存在。随着对象的消失而消失。

2. 局部变量在调用了相应的方法时运行到了创建该变量的语句时存在,局部变量一旦出了自己的作用域

那么立即从内存中消失。

初始值的差别:

1. 成员变量是有默认的初始值。

数据类型     默认的初始值

int                0

float              0.0f

double              0.0

boolean            false

char                 ' '

String(引用数据类型) null

2. 局部变量是没有默认的初始值的,必需要先初始化才干使用。

以下来看个样例:

//人类
class Person { String name; //成员变量 public void eat(){
int age ; age = 12;
for(int i = 0 ; i< 5 ; i++){
System.out.println("hello world"+ age);
}
} } class Demo3
{
public static void main(String[] args)
{
Person p1 = new Person();
p1.eat(); }
}

结果:

hello world12

hello world12

hello world12

hello world12

hello world12

以下是内存中代码的运行图

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

首先内存整体分为了五个部分,包含 stack segment(栈内存)、heap segmentheap segment(堆内存)、code segment(方法区)、data segment(静态代码块)、执行时常量池(Runtime Constant Pool)是方法区的一部分。

当中我们程序中用keywordnew出来的东西都是存放在heap segment(堆内存)。





    程序中的局部变量存放在stack segment(栈内存),这些局部变量是在详细方法运行结束之后,系统自己主动释放内存资源(而heap segment中的资源须要java垃圾回收机制来处理)。

程序中的方法。是内存中的code segment(方法区)中的,并且是多个对象 共享一个代码空间区域。





    static静态变量。须要放在内存中的data segment(静态代码块)中。

执行时常量池。储存常量。

关于内存机制 ,等我弄懂些再发表文章。都怪我太菜

JAVA_SE基础——26.[深入解析]局部变量与成员变量的差别的更多相关文章

  1. JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别

    黑马程序员入学blog ... 如果这章节很难懂的话应该返回去先看  JAVA_SE基础--10.变量的作用域 定义的位置上区别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在方 ...

  2. java基础学习总结三(jdk7新特性、变量(局部变量和成员变量)、常量以及运算符)

    一:jdk7新特性 可以表示二进制数值,以0b开头,中间可以使用下划线_分隔符.如下: @Test /** * 测试jdk新特性 */ public void testJdk7(){ int a=0b ...

  3. java类(Class)的概念;对象的概念,声明类的属性 和方法,局部变量和成员变量,面向对象编程思维,抽象的概念

    类(Class)的概念 类是对一组具有相同特征和行为的对象的抽象描述. 理解: [1] 类包含了两个要素:特性和行为 => 同一类事物具有相同的特征和行为. [2] 类是一个群体性概念.例如:网 ...

  4. JAVA中局部变量 和 成员变量有哪些区别

    JAVA中局部变量 和 成员变量有哪些区别 1.定义的位置不一样<重点>***局部变量:在方法的内部成员变量:在方法的外部,直接写在类当中 2.作用范围不一样<重点>***局部 ...

  5. java的局部变量和成员变量以及区别

    一.局部变量 存在某个方法中的变量就叫局部变量,局部变量一旦声明就必须赋值 否则不能使用 代码如下: class Person { String name; char sex; int age; pu ...

  6. C#面向过程之局部变量、成员变量、变量作用域、可变参数

    局部变量与成员变量:  局部变量:定义在方法里面的变量就叫做局部变量:没有默认的初始值,使用变量之前必须给它赋值成员变量:定义在类下面的变量叫做成员变量:如果是数值类型默认初始值为0 如果是引用类型默 ...

  7. Java面向对象的局部变量和成员变量

    package cn.itcast.day06.demo03; /* 局部变量和成员变量 1. 定义的位置不一样[重点] 局部变量:在方法的内部,类的方法内部 成员变量:在方法的外部,直接写在类当中 ...

  8. iOS 局部变量 全局变量 成员变量

    一.成员变量 : 写在类声明的大括号中的变量叫成员变量 (也叫属性/实例变量) 成员变量不可离开类 离开了类就不是成员变量 成员变量不能再定义的同事初始化 成员量只能通过对象来访问 成员变量存储在堆中 ...

  9. Java 的局部变量和成员变量

    在Java语言中没有全局变量  分析各种变量的作用域的最简单方法是以花括号为界, 1.在类体中定义的是成员变量,成员变量会被默认初始化 2.在方法中定义的是局部变量,局部变量不会被默认初始化

随机推荐

  1. Android手机提示“未安装应用程序”

    用eclipse调试应用时,遇到了这个问题,网上给出的解决方案倒是挺多,但似乎一个都没奏效,而且我手机也重启了,还是有问题,郁闷ing-   然后看到一篇文章指出,可能不是签名和SD的卡问题,而是我们 ...

  2. 【转】Itunes Connect新版本如何提交应用

    本文系转载,版权归原作者所有(原文链接>>). How do I submit my app to iTunes connect? To submit your app to iTunes ...

  3. golang的Flag和Pflag

    Flag和Pflag类似于python的argparse:解析命令行 flag是golang自带的包:github.com/spf13/pflag 参考:https://o-my-chenjian.c ...

  4. ConcurrentHashMap和HashMap的区别

    (1)ConcurrentHashMap对整个桶数组进行了分段,而HashMap则没有 (2)ConcurrentHashMap在每一个分段上都用锁进行保护,从而让锁的粒度更精细一些,并发性能更好,而 ...

  5. JavaScript:Date 对象

    ylbtech-JavaScript:Date 对象 1.返回顶部 Date 对象 Date 对象用于处理日期和时间. 创建 Date 对象的语法: var myDate=new Date() 注释: ...

  6. 菜鸟学步之 爆破AspriseOCR 4.0

    最近写一个小程序要用到OCR控件,在网上查了一下,据说AspriseOCR 4.0效果不错.试用了一下发现的确还行,不过就是要注册,试用版本每次都会弹出讨厌的对话框来.网上看到有一篇“新人报道–处女破 ...

  7. 如何确定HyperThreading是否在Linux上已开启?

    命令如下: dmidecode -t processor | grep HTT 参考资料 ============= https://unix.stackexchange.com/questions/ ...

  8. MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释)

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 前言:生产环境中一台mysql主机存在单 ...

  9. MFC中页面设置对话框CPageSetupDialog

    void CCPageSetupDialogView::OnPageSetting() { CPageSetupDialog dlg; // 利用默认参数构造页面设置对话框 if(dlg.DoModa ...

  10. 文本分类(六):使用fastText对文本进行分类--小插曲

    http://blog.csdn.net/lxg0807/article/details/52960072 环境说明:python2.7.linux 自己打自己脸,目前官方的包只能在linux,mac ...