4.7-全栈Java笔记:静态初始模块与参数传值机制

静态初始化块

构造方法用于对象的初始化!

静态初始化块,用于类的初始化操作!在静态初始化块中不能访问非static成员。

静态初始化块执行顺序(学完继承再看这里):

上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到我们的类的静态初始化块为止。

构造方法执行顺序和上面顺序一样!! 

【示例1static初始化块

public class   User {

    int id;           //id

    String name;  //账户名

    String pwd;   //密码

    static   String company; //公司名称

    static {

       System.out.println("执行类的初始化工作");

       company = "北京尚学堂";

       printCompay();

    }

    public static void   printCompay(){

       System.out.println(company);

    }

    public static void   main(String[] args) {

       User  u3 = new   User();

    }

}

4.7-全栈Java笔记:静态初始模块与参数传值机制_第1张图片

   示例1 运行结果图 

参数传值机制

JAVA中,方法中所有参数都是“值传递”,也就是“传递的是值的副本”。 也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件改变不会影响原件。

1)基本数据类型参数的传值

传递的是值的副本。 副本改变不会影响原件。

2)引用类型参数的传值

传递的是值的副本。但是,引用类型指的是“对象的地址”。因此,副本和原参数都指向了同一个“地址”,改变“副本指向地址对象的值,也意味这原参数指向对象的值也发生了改变”。

【示例 2】 多个变量指向同一个对象

 public class   User {

    int id;           //id

    String name;  //账户名

    String pwd;   //密码

    public   User(int id, String name) {

       this.id =   id;

       this.name = name;

    }

    public static void   main(String[] args) {

       User u1 = new   User(100, "高小七");

       User u3 = u1;

       System.out.println(u1.name);

       u3.name="张三";

       System.out.println(u1.name);

    }

}

4.7-全栈Java笔记:静态初始模块与参数传值机制_第2张图片

   示例2 运行结果图 

3)this隐式参数

对象的所有方法(包含构造方法)都被编译器默认增加了一个隐式参数this

4.7-全栈Java笔记:静态初始模块与参数传值机制_第3张图片




「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。


笔记包含从浅入深的六大部分:

A-Java入门阶段

B-数据库从入门到精通  

C-手刃移动前端和Web前端

D-J2EE从了解到实战

E-Java高级框架精解

F-Linux和Hadoop 

你可能感兴趣的:(4.7-全栈Java笔记:静态初始模块与参数传值机制)