每日一学(10)——static关键字

static关键字相关知识点:

一、在一个变量前加上static,这个变量将作为数据的共享数据存在。

如下代码:

public  class  person{

//对象的特有数据(非静态修饰)

//对象的共享数据(静态修饰),调用者可以是new的对象

//被静态修饰的成员,可以被类的名字直接调用,调用者可以是new的对象,也可以是new的类名

    String name;

    static String  className;

}

public class test{

扫描二维码关注公众号,回复: 2648828 查看本文章

   public static void main (String[]args){

      person p1=new person();

      person p2=new person();

         p1.name="哈哈";

         p2.name="嘻嘻";

System.out. println (p1.name);

System.out. println (p2.name);

//对象调用类的成员变量

p1. className="基础班";

System.out. println (p2.className);//将会输出基础班

System.out. println (person.className);//将会输出基础班

}

}

二、static特点

1.被static修饰的成员变量属于类,不属于这个类的某一个对象

也就是说,多个对象在访问或修改static修饰的成员变量时,其中一个对象将static成员变量值进行了修改,其他对象中的static成员变量值跟着改变,即多个对象共享同一个static成员变量

2.被static修饰的成员建议通过类名直接调用

访问静态成员的格式:类名.静态成员变量名、    类名.静态成员方法名(参数)

对象名.静态成员变量名       ------不建议使用该方式,会出现警告

对象名.静态成员方法名(参数)     ------不建议使用该方式,会出现警告

三、static注意事项

1、静态内容是优先于对象存在,只能访问静态,不能使用this/super。静态修饰的内容存于静态区。(静态中不能使用非静态,原因:生命周期不同,静态优先于非静态)

2、同一个类中,静态成员只能访问静态成员

3、main方法为静态方法仅仅为程序执行入口,它不属于任何一个对象,可以定义在任意类中

static的应用场合:

1、  static只修饰成员变量和成员方法

2、  成员变量加static根据具体事物,具体分析,定义事物的时候,多个事物之间是否有共性的数据,共性的定义为静态

3、  成员方法加static跟着变量走,如果方法没有调用过非静态成员,将方法定义为静态

四、static关键字在多态中的运用

public class Fu{

  static int i=1;

  public static void show( ){

     System.out. println(父类静态方法show);

}

}

public class Zi{

 static int i=2;

  public static void show( ){

     System.out. println(子类静态方法show);

}

}

public classTest{

//多态调用中,编译看谁,运行看谁     编译都看=左边的父类,父类有编译成功,没有编译失败

运行,静态方法,运行父类中的静态方法

运行,非静态方法,运行子类的重写方法

成员变量,编译运行全是看父类

public static void main (String[]args){

      Fu f=new Zi( );

    System.out. println(f.i);//输出的是父类中i的值1

     f.show( );//调用的还是父类中的静态方法,原因:静态属于类,不属于对象。对象的多态性,静态和对象无关,父类的引用,静态方法 

}

}

五、定义静态常量

定义格式:public static final 数据类型变量名 = ;(此时变量名用全部大写,多个单词使用下划线连接

class Company {

    public staticfinal String COMPANY_NAME = "传智播客";

    public staticvoid method(){

        System.out.println("一个静态方法");

    }

}

当我们想使用类的静态成员时,不需要创建对象,直接使用类名来访问即可。


System.out.println(Company.COMPANY_NAME); //打印传智播客

Company.method(); //调用一个静态方法

注意:

接口中的每个成员变量都默认使用public static final修饰。

所有接口中的成员变量已是静态常量,由于接口没有构造方法,所以必须显示赋值。可以直接用接口名访问。

interface Inter {

    publicstaticfinalintCOUNT = 100;

}

访问接口中的静态变量:Inter.COUNT

猜你喜欢

转载自blog.csdn.net/weixin_42517286/article/details/81015428