关键字 static

来源:互联网 发布:申请网络出版 编辑:程序博客网 时间:2024/06/17 09:48
static 关键字和修饰符
类中封装的变量数据都是类的每个对象特有的数据
类中封装的静态数据是类的每个对象共享的数据
static 变量:可以把对象调用,也可以用类名调用




static 特点:
static 是一个修饰符,用于修饰成员
2、static修饰的成员可以被对象共享
3、static修饰的成员优于对象存在,因为static的成员随着类的加载就已经存在了
4、static修饰的成员多了一种调用方式,就是可以被类名直接调用:类名.static成员
5、static修饰的数据是共享的数据,对象中存储的是特有的数据


 class Person{
          private String name;//实例变量或成员变量 
 static private String country;//静态变量或类变量
 public Person(){};
 public Person(String name,String country){
   this.name=name;
this.country=country;
 
 }
 public void peek(){
   System.out.println("name:"+name+"country:"+country);
 }
 
 


}
public class StaticDemo{
    public static void main(String[] args){
 Person p=new Person("jack","CN");
 p.
}




}
成员变量和静态变量的区别:
1、两个变量的周期不同
   成员变量随着对象的创建而存在,随对象的回收而释放
   静态变量随着类的加载而存在,随着类的消失而消失
2、调用方式不同
   成员变量只能被对象调用
   静态变量即能被对象调用,也能被类名调用(建议用类名调用)
3、别名不同


4、存储位置不同
   成员变量存储在堆内存的对象的内存中,所以也叫对象的特有数据
   静态变量存储在放法区(共享数据区)的静态区内,所以也叫对象的共享数据




static 的注意事项:
1、静态放法只能访问静态成员(variable,method),
非静态成员即可访问静态成员也可以访问非静态成员
2、静态放法中不可使用this和super关键字
3、主函数时静态的






主函数特殊之处:
1、格式固定
2、被jvm识别
public static void main(String[] args);


public:权限是最大的
static: 不需要对象,直接用主函数所属类名调用即可 
void:不返回值
main:函数名,不是关键字,只是一格jvm能够识别的固定名字
String[] args:主函数的参数列表,是一个数组类型的参数,且都是字符串类型
/**********************************************
静态代码快:
随着类的加载而执行,而且只执行一次
作用:给类初始化
/*******************************************
构造代码块:可以给所有的对象初始化
构造函数:给对象进行针对行初始化
局部代码块:限制局部变量的生存周期
 /**********************************
静态代码块、构造代码块、构造函数三者的执行顺序:


静态代码块
构造代码块
构造函数






=================================================
什么时候使用关键字static: (修饰静态变量 修饰静态函数)




静态变量:
当分析对象中所具备的成员变量的值都是相同时,这时这个成员可以修饰
成静态的;
只要数据在对象中有不相同的,就是数据是对象特有的,非静态的;
如果相同的数据,对象不需要做修改,只需调用即可,不需要存储在对象中,定义成静态的;




静态函数:
函数是否用静态修饰,就看一点,就看函数功能访问的是对象的特有数据
简单的说,从源代码看,该功能是否需要访问到非静态的成员变量,如果
需要的改函数是非静态的,如果不需要则可以定义为静态的,当然也可以定义成非静态的,
但是非静态的需要被对象所调用,创建对象而没有访问特有数据的方法,
创建对象是没有意义的。

















































0 0