学习笔记——关键字static

来源:互联网 发布:公主软件游戏 编辑:程序博客网 时间:2024/06/05 20:43

 static 关键字

作用:是一个修饰符,用于修饰成员(成员变量,成员方法)

被static修饰后的成员变量只有一份

  当成员被static修饰后多了一种访问方式,除了可以对象调用之外,还可以被类直接调用(类名.静态成员);
  

  static 的特点:

1,.随着类的加载而被加载

2,优先于对象的存在

3,.被所有的对象所共享

4,可以直接被类名所调用


  静态成员变量(类变量)和非静态变量(实例变量)的区别:

1,存放位置

类变量随着类的加载而存在于data内存区

实例变量随着对象的建立而存在于堆内存区

2,生命周期

类变量生命周期最长,随着类的消失而消失

实例变量生命周期比类变量短,它是随着对象的消失而消失


方法注意事项:

1,静态的方法只能访问静态的成员(成员变量,成员方法) 

2,非静态的方法既能访问静态的成员(成员变量,成员方法),也能访问非静态的成员

3,静态的方法中不可以定义this super 关键字

 因为静态优先于对象存在,所以静态方法不可以出现this


什么时候使用静态

因为static 所修饰的内容是成员(成员变量,成员方法),所以可以从两个方面入手

1,什么时候使用静态的成员变量?

 当属于同一个类的所有对象出现共享数据时,需要将存储这个共享数据的成员变量用static修饰

2,什么时候使用静态方法?

当功能内部没有访问到非静态的成员时(对象特有的数据),那么该功能可以定义成静态的

如:

public class A_6_37 {
public static void main(String[] args){
Person A=new Person();
A.name="kkl";
A.country="China";
System.out.println(A.name+A.country);
Person.print();
Person B=new Person37();
B.name="ddf";
System.out.println(B.name+B.country);
//因为country是静态成员变量,B无需重新赋值,直接共享使用
Person.print();
}
}
class Person{
String name;
static String country;
//country可以看成是共享数据,因此用static修饰,变成静态成员变量
static void print(){
//没有访问到对象特有数据,因此可以定义成静态方法
System.out.println("你好");
}
}

0 0
原创粉丝点击