静态初始化块

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

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

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

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

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

【示例1】static初始化块

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();
    }
}


java传参不固定 java参数传值_静态初始化

   运行结果图

参数传值机制

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);
    }
}


java传参不固定 java参数传值_Java_02

   运行结果图


3)this隐式参数

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


java传参不固定 java参数传值_静态初始化_03




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


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

A-Java入门阶段

B-数据库从入门到精通  

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

D-J2EE从了解到实战

E-Java高级框架精解

F-Linux和Hadoop