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