黑马程序猿入学blog ...
java
假设这章节很是难懂的话应该返回去先看 JAVA_SE基础——10.变量的做用域post
定义的位置上差异:
2. 局部变量是定义在方法以内。spa
做用上的差异:
1. 成员变量的做用是用于描写叙述一类事物的公共 属性的。
2. 局部变量的做用就是提供一个变量给方法内部使用而已。
生命周期差异:
1. 随着对象 的建立而存在。随着对象的消失而消失。
2. 局部变量在调用了相应的方法时运行到了建立该变量的语句时存在,局部变量一旦出了本身的做用域
那么当即从内存中消失。.net
初始值的差异:
1. 成员变量是有默认的初始值。
数据类型 默认的初始值
int 0
float 0.0f
double 0.0
boolean false
char ' '
String(引用数据类型) null
code
2. 局部变量是没有默认的初始值的,必须要先初始化才干使用。对象
如下来看个样例:blog
//人类 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(); } }结果:
如下是内存中代码的运行图生命周期
首先内存总体分为了五个部分,包含 stack segment(栈内存)、heap segmentheap segment(堆内存)、code segment(方法区)、data segment(静态代码块)、执行时常量池(Runtime Constant Pool)是方法区的一部分。ip
当中咱们程序中用keywordnew出来的东西都是存放在heap segment(堆内存)。
程序中的局部变量存放在stack segment(栈内存),这些局部变量是在详细方法运行结束以后,系统本身主动释放内存资源(而heap segment中的资源需要java垃圾回收机制来处理)。内存
程序中的方法。是内存中的code segment(方法区)中的,而且是多个对象 共享一个代码空间区域。
static静态变量。需要放在内存中的data segment(静态代码块)中。
执行时常量池。储存常量。
关于内存机制 ,等我弄懂些再发表文章。都怪我太菜