黑马程序员入学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

下面是内存中代码的执行图

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





    其中我们程序中用关键字new出来的东西都是存放在heap segment(堆内存)。





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





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





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

运行时常量池,储存常量。

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

最新文章

  1. 最简单的推送--uexGetui
  2. iOS UITableView 分割线从零开始
  3. AFNetworking 之于 https 认证
  4. C语言中强制数据类型转换(转)
  5. 浅析js中的this
  6. 【原创】一起学C++ 之enum ---------C++ primer plus(第6版)
  7. apt-get用法
  8. es5 中类的2种基本实现方法
  9. HDU 3625 Examining the Rooms:第一类stirling数
  10. Android APT(编译时代码生成)最佳实践
  11. Windows安装TensorFlow
  12. sql语句start with connect by prior语法解析
  13. MVC与单元测试实践之健身网站(六)-计划的添加与重置
  14. 牛客训练赛25-A-最长区间
  15. day40 css高级选择器
  16. unity-------------------打包BuildAssetBundles的使用
  17. php---------字符串转义函数(addslashes,stripslashes)
  18. PhpStorm 全局查找的快捷键
  19. java基础13 接口(及关键字:interface、implements)
  20. 配置Yum源repo文件及搭建本地Yum服务器

热门文章

  1. 【Chrome控制台】获取元素上绑定的事件信息以及监控事件
  2. URL中“#”
  3. 作为一个懒虫,如何优雅的使用windows
  4. 删除项目中的.pyc文件
  5. IO模式和IO多路复用
  6. ASP.NET Core Web 支付功能接入 微信-扫码支付篇
  7. New FileReader上传图片
  8. angularJs模块ui-router之状态嵌套和视图嵌套
  9. 分析 webpack 打包后的代码
  10. 循环while do---while for循环