十五、static关键字详解

上课视频:

链接:https://pan.baidu.com/s/11Pz2yzEUXKyQyufibv9LKQ 密码:okge
链接:https://pan.baidu.com/s/1lPs8gdUpHk7Mip2orVftSA 密码:3lid

上课代码:

https://github.com/joychen1579/javaBaseDemos

static 关键字的作用。

1、可以通过类直接去访问,(不需要实例化出对象就可以调用函数或者变量)

2、在一个类当中成员变量用static修饰过后。该类的所有对象共用这个属性的内存地址。

3、static修饰的方法,只能调用static修饰的方法。如果想要调用非static修饰的方法,就必需通过类的对象去调用。

public class Test {
    public static void main(String[] args) {
          Test t = new Test();
          t.fun1();  //通过对象去调用
         
        fun1();//不能直接调用
}

public void fun1() {
        fun2();
        fun3();
        Cat c2 = new Cat();
        c2.printCat2();
}

4、非static修饰的函数可以调用static修饰的函数。在同一个类当中也可以调用非static修饰的函数,不在同一个类中需要实例化对象去调用

public void fun1() {
        fun2();
        fun3();
        Cat c2 = new Cat();
        c2.printCat2();
    }
    
    public static void fun2() {
        
    }
    
    public void fun3() {
        
    }

5、static可以 修饰方法,可以static 修饰变量,也可以单独作为语语法块
修饰方法

class A
    public static void fun(){
    }
}

修饰变量:

class B{
   public static String usernane;
}

单独语法块,也静态语法块.
在整个程序当中,第一次调用该类的时候。才会去走的代码 。

class C{
    static{
     代码块
   }
}

上课案例:

Cat类

package com.lianwei1;

public class Cat {
    static {
        System.out.println("我第一被调用了");
    }
    
    public static String name;   //名称
    public String type;  //品种
    
    
    public static void printCat() {
        System.out.println("我是一只小花猫");
    }
    
    
    public void printCat2() {
        System.out.println("我会抓老鼠");
    }
    

}

Test类

package com.lianwei1;

public class Test {

    public static void main(String[] args) {
//      Test t = new Test();
//      t.fun1();
//      
//      
//      Cat.printCat();
//      
//      Cat c = new Cat();
//      c.printCat2();
//      
//      
//      c.name="花花";
//      
//      c.type = "英短";
//      
//      Cat c2 = new Cat();
//      
//      System.out.println(c2.name);
//      System.out.println(c2.type);
        
        Class catClass = Cat.class;
        Class perClass = Persion.class;
        System.out.println(catClass.getName());
        
//      Cat.printCat();
//      Cat c = new Cat();
//      c.printCat2();
//      Cat c1 = new Cat();
//      c1.printCat2();
        
    }
    
    public void fun1() {
        fun2();
        fun3();
        Cat c2 = new Cat();
        c2.printCat2();
    }
    
    public static void fun2() {
        
    }
    
    public void fun3() {
        
    }
}

static 的原理

1.Class类
是用于描述java当中所有类。(类名、方法、函数、参数、成员变量......)

2.所有类在第一次使用的时候,都会实例化出一个该类的Class类对象。

3.在实例化出Class类对象的时候。会把所有有static修饰的变量、或者方法全部初使化好。

4。都先实例化在Class类的对象中。然所有的对象又用的是同一个Class对象。所以static不管在那个对象中都可以调用。

总结:

1、可以通过类直接去访问,(不需要实例化出对象就可以调用函数或者变量)
2、静态修饰变量,它是通用的。这个类所产生的对象修改的是同一个变量。

作业:

下面代码是否会通过编译,如果不能错误在那里。

public class Persion {
    public int id;
    public String username;
    public static String sex;
    
    
    public static void printInfo() {
        System.out.println(id+username+sex);
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容