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

本文详细介绍了Java中static关键字的用途及特性,包括static如何实现数据共享、注意事项、应用场合及在多态中的运用等。同时,还介绍了如何定义静态常量。

static关键字相关知识点:

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

如下代码:

public  class  person{

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

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

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

    String name;

    static String  className;

}

public class test{

   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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值