静态

来源:互联网 发布:实矩阵的奇异值分解 编辑:程序博客网 时间:2024/05/17 02:31

/*
 * 静态static函数中的使用。
 * 什么时候函数需要静态修饰?
 * 该函数没有访问过对象中的属性时,就需要静态修饰。
 *
 *
 * static 是什么?
 * 成员修饰符
 * 特点:
 * 1.被静态修饰的成员,可以直接被类名所调用
 * 2.静态成员优先于对象存在。
 * 3.静态成员随着类的加载而加载,随着类的消失而消失,静态成员生命周期很长。
 * 注意事项:
 * 1.静态方法只能访问静态成员,不能访问非静态成员,这就是静态方法的局限性。非静态方法能访问静态成员
 * 2.静态方法中不能出现this或者super关键字。
 * 3.主函数是静态的。
 *
 * 怎么用?
 * 直接用于修饰成员。
 *
 * 什么时候用?
 * 成员变量:如果数据在所有对象中的都是一样的。直接静态修饰
 * 成员函数:如果函数没有访问过对象中的属性数据,那么该函数就是静态的。
 *
 * 成员变量与静态变量的区别
 * 1.名称区别:
 *   成员变量也叫实例变量
 *   静态变量也叫类变量
 *  
 * 2.内存存储上的区别:
 *   成员变量存储到堆内存的对象中。
 *   静态变量存储到方法区的静态区中。
 *  
 * 3.生命周期区别
 *   成员变量随着对象出现而出现,随对象的消失而消失。
 *   静态变量随着类的出现而出现,随着类的消失而消失。


静态代码块:随着类的加载而执行,而且只执行一次。
 * 作用:给类执行初始化。
 * 应用场景:类不需要创建对象,但需要初始化,这是将部分代码存储到静态代码块中。
 */
class Person{
 private String name;
 private int age;
 static String country="china";                      //静态变量
 Person(String name,int age)
 {
  this.name=name;
  this.age=age;
 }
 public void show()
 {
  System.out.println("name="+name+"age="+age);
 }
// public void sleep()
// {
//  System.out.println("呼呼");
// }
 /*
  既然sleep方法没有访问到对象中的特有数据
  都可以不需要对象就可以使用该方法,只要在该方法上用static修饰即可。
  */
 public static void sleep()                         //静态函数
 {
  System.out.println("呼呼呼");
 }
}
public class Demo{
 public static void main(String[] agrs)
 {
         /*创建对象调用sleep方法。
                              发现,sleep并没有使用对象中的数据。
                             该对象的建立是无意义的。
                             该方法属于Person.class,
                             可以通过类名的方式来访问。
         */
      //  Person p = new Person("jason",21);
      //  p.sleep();
  Person.sleep();                               //静态函数,通过‘类名.函数名’,直接使用
  System.out.println(Person.country);           //静态变量,通过 ‘类名.变量名’,直接使用。
 }                                           
}

原创粉丝点击