黑马程序员技术交流社区

标题: java变量作用域和生命周期 [打印本页]

作者: onlyonewf    时间: 2012-6-10 10:41
标题: java变量作用域和生命周期
   1.变量的作用域和生命周期什么关系?

2.java除了在类体和方法体(包括参数)中可以声明变量外,其他位置一定不可以声明变量吗?比如高级别的应用里是不是有例外呢?

3.java源文件中代码的组织方式一定是:
Java codeclass ClassName1{//类定义    //成员变量定义    //成员方法定义}class ClassName2{//类定义    //成员变量定义    //成员方法定义}//.......

一定是以上这种结构吗?比如在两个类定义之间一定不可能有其他代码吗(注释除外)?类体中除了成员变量和成员方法的定义外一定不可能有其他内容吗?成员变量和成员方法的定义可不可以打乱顺序?

4.JVM到底把内存分成几个部分啊?不同资料里说的不一样啊。。


现在学Java,感觉这些最基础的观念还需要强化,希望高手指点。

作者: 赵兵锋    时间: 2012-6-10 10:59
1.作用域表示仍可以访问到该变量的范围,生命周期表示变量从创建都销毁的过程,比如说在某方法内创建一个对象,在创建时,其生命周期开始,在此方法内部可以访问该变量,出了此方法就访问不了了,这个方法就是其作用域,而在离开此方法后,由于没有任何引用指向该对象,那么当垃圾回收器工作时,会将此对象销毁,即将其内存空间释放,此时其生命周期结束。
2.java是面向对象语言,变量要么是某个类的成员变量,要么是方法中的局部变量,若定义在类外部,那在类里的方法里,怎么访问该变量呢?所以在类体外是不可以定义变量的.另外在类的初始块里也可定义局部变量
3.两个类之间除了注释是没有其他代码的,类体中除了成员变量和成员方法的定义外,还可以有静态初始块、普通初始块,成员变量和成员方法的定义顺序可以打乱,但那样不便于编程逻辑,一般习惯将成员变量定义放前面。
4.Java内存中的分配:栈、堆、常量池
栈在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配。
堆用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理
常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值(final)还包含一些以文本形式出现的符号引用,比如:
类和接口的全限定名;
字段的名称和描述符;
方法和名称和描述符。
虚拟机必须为每个被装载的类型维护一个常量池。常量池就是该类型所用到常量的一个有序集和,包括直接常量(string,integer和 floating point常量)和对其他类型,字段和方法的符号引用。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2