《Java 2 实用教程》读书笔记(四)4.4

来源:互联网 发布:2017网络剧台湾耽美 编辑:程序博客网 时间:2024/05/18 03:00

第4章  类、对象和接口

1. 实例变量和类变量的区别:

    如果类中的成员变量有类变量,那么所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其他对象的这个类变量,也就是说对象共享类变量

    当Java程序执行时,类的字节码文件被加载到内存,如果该类没有创建对象,类的实例成员变量不会被分配内存。但是,类变量被加载到内存时,被分配了相应的内存空间。所有的对象的类变量是相同的一处内存空间,直到程序退出运行,才释放所占有的内存。类变量不仅可以通过某个对象访问,也可以直接通过类名访问。

2. 实例方法和类方法的区别:
实例方法:当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址,当该类创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址,即方法的入口地址被所有的对象共享,当所有的对象都不存在时,方法的入口地址才被取消。实例方法必须通过对象来调用。
类方法:对于类方法,在该类被加载到内存时,就分配了相应的入口地址,从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。类方法的入口地址知道程序退出才被取消。类方法中出现的成员变量必须是被所有对象共享的变量,即类变量。

3. 无论是类方法还是实例方法,当被调用执行时,方法中的局部变量才被分配内存空间,方法调用完毕,局部变量即刻释放内存。在一个方法被调用执行完毕之前,如果该方法又被调用,那么,方法的局部变量会再次被分配新的内存空间。

4. this可以出现在实例方法和构造方法中,但不可以出现在类方法中。this出现在类的构造方法中时,代表使用该构造方法所创建的对象。格式:this.实例成员变量/方法;类名.类变量/方法。通常情况下,可以省略实例成员变量名字前的“this.”以及static变量前的“类名.”,但当成员变量的名字和局部变量的名字相同时,成员变量前面的“this.”或“类名.”不可省略。

5. package语句指明该源文件定义的类所在的包,至多只有一句,且放在源文件的第一句,如果省略,则源文件中定义命名的类被隐含地认为是无名包的一部分,即源文件中定义命名的类在同一包中,但该包没有名字。编译可以在包中也可在包外,但运行程序时必须在包外,因为起了包名,类的全名已经包括包名。  
 
6.使用import语句引入包中类,可以有多个import语句,必须写在package和源文件中类的定义之间。 系统自动引入java.lang包中所有类。 如果import整个包中的类,可能会增加编译时间,但绝对不会影响程序运行的性能,因为执行时,只是将真正使用的类的字节码文件加载到内存。 如果某个无名包类和程序引入的包中的某个类同名,应用程序将使用无名包类。若想用带包名的类,要明确指出。 
 
7.访问权限是指对象是否可以通过“.”运算符操作自己的变量或使用类中的方法。访问限制修饰符有private,protected,public。 

0 0
原创粉丝点击