2018-09-23静态初始化块、参数值传递、包、继承使用要点
1.静态初始化块:
记住执行顺序 :有继承的时候也是一样--->想想java SA JVM构建虚拟机的时候。栈、堆和方法区。在构建
方法区的类信息(静态变量、静态方法、常量(字符串常量) ),new的时候堆(构建对象的信息(普通变量、
普通方法)),当调用方法的时候会创建一个栈帧(是连续的新进的后出)。
2.参数值传递:
Java中,方法中所有参数都是“值传递”,也就是“传递的是值的副本”。 也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件改变不会影响原件。
· 基本数据类型参数的传值
传递的是值的副本。 副本改变不会影响原件。
· 引用类型参数的传值
传递的是传值的副本。但是引用类型指的是“对象的地址”。因此,副本和原参数都指向了同一个“地址”,改变“副本指向地址对象的值,也意味着原参数指向对象的值也发生了改变”。
代码示列以及图解:
public class User4 {
int id; //id
String name; //账户名
String pwd; //密码
public User4(int id, String name) {
this.id = id;
this.name = name;
}
public void testParameterTransfer01(User4 u){
u.name="高小八";
}
public void testParameterTransfer02(User4 u){
u = new User4(200,"高三");
}
public static void main(String[] args) {
User4 u1 = new User4(100, "高小七");
u1.testParameterTransfer01(u1);
System.out.println(u1.name);
u1.testParameterTransfer02(u1);
System.out.println(u1.name);
/*out下面的图片说明了---->值传递的原因
高小八
高小八
*/
}
}
清晰图片3.包
我们通过package实现对类的管理,package的使用有两个要点:
1. 通常是类的第一句非注释性语句。
2. 包名:域名倒着写即可,再加上模块名,便于内部管理类。
4.继承使用要点
1.父类也称作超类、基类、派生类等。
2.Java中只有单继承,没有像C++那样的多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护。
3.Java中类没有多继承,接口有多继承。
4.子类继承父类,可以得到父类的全部属性和方法 (除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法)。
5.如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object。