java中的this关键字 和 static关键字

this关键字  

案例一   :成员、局部名称冲突、 找到成员变量

    1.this作用:解决 成员变量 和 局部变量的名称冲突的问题。

    2. this找到成员变量

    String name;
 public fuzhi(String name){    //构造方法
     System.out.println(name);
       this.name = name;     // this.name找到成员变量
 }

    public static void main(String[] args) {
        fuzhi d1 = new fuzhi("李白");
    }

案例二:有参构造调用无参构造 

3. 在构造方法中使用this(参数 ) 的形式来调用其他的构造方法


 public fuzhi(){
     System.out.println("无参构造");
 }
 public fuzhi(String name){
     this();   // 调用有参构造
     System.out.println("有参构造");
 }
    public static void main(String[] args) {
        fuzhi d1 = new fuzhi("有参构造");
    }

输出结果:  无参构造
                 有参构造

注意:(1)只能在构造方法中使用this调用其他的构造方法,不能在成员方法中使用。

            (2)在构造方法中,如果使用this关键字,必须是第一条执行语句而且只能出现一次。

            (3)在一个类的两个构造方法中,不能使用this关键字互相调用。

static关键字

1. 作用:可以修饰  成员变量、方法、代码块等。

 案例 1.   静态变量  共享实例变量

public class fuzhi {
    String name;
    String school;
   static String adress="青青草原";   //共享实例变量

    public fuzhi(String name, String school) {
        this.name = name;
        this.school = school;
    }

    public static void main(String[] args) {
        fuzhi d1 = new fuzhi("喜羊羊", "大肥羊学校");
        fuzhi d2 = new fuzhi("喜羊羊", "大肥羊学校");
         // 青草被吃了  换地方
         d1.adress="m78星云";   // d1赋值
        System.out.println(d2.adress);  // d2输出
    }
}

输出结果: m78星云

由此可知,static  静态变量  可以共享实例变量。

案例二: 静态方法的访问

定义:被static关键字修饰的方法称为静态方法

语法格式:类名.方法名(静态)的方式来访问

Demo03类:

public class Demo03 {
    public static int s1(int a, int b) {   //静态方法
        System.out.println(a + b);
        return a + b;
    }
    public int s1(int a,int b,int c){
        System.out.println(a+b+c);
        return a+b+c;
    }
}

Demo04类:

public class Demo04 {
     public static void main(String[] args) {
         Demo03.s1(15,4);  //静态方法 直接访问,无需创建对象,
         Demo03 d1 = new Demo03();
         d1.s1(15,45,62);  //需要创建对象来访问。
     }
}

输出结果:19

                  122

3. 静态代码块

(1) 定义:使用static关键字修饰的代码成为静态代码块。

         代码块:在java中,使用一对大括号包围起来的若干代码被称为一个代码块。

(2)作用:当类被加载时,静态代码块会执行,并且只会执行一次。

案例三:静态代码块(只能被自动执行一次)

Dem03  类:

public class Demo03 {
  static{
      System.out.println("静态代码块");  //静态代码块会被自动执行一次。
  }
}

Demo04类:

public class Demo04 {
     public static void main(String[] args) {
         Demo03 d1 = new Demo03();  //静态代码块自动执行一次(只能被执行一次)
     }
}

输出内容 : 静态代码块

这不简简单单?

你可能感兴趣的:(面向对象,java,开发语言)