[关闭]
@ayw 2016-05-05T10:10:33.000000Z 字数 1909 阅读 595

static 静态 关键字

static 静态 关键字


静态:static,是一个修饰符,用于修饰成员(成员函数,成员变量)
当成员被静态修饰,就多了一个调用方式,除了可以被对象调用之外,还可以直接被类名调用,类名.静态成员(成员变量,成员方法)

static特点:
- 随着类的加载而加载,也就是,静态会随着类的消失而消失,说明他的生命周期最长
- 优先于对象存在,明确一点,静态是先存在的,对象是后存在的
- 被所有的对象共享
- 可以直接被类名所调用

  1. class Person
  2. {
  3. String name;//成员变量,实例变量
  4. static String country = "CN";//静态的成员变量,类变量
  5. public void show()
  6. {
  7. System.out.println(name+"::")+country;
  8. }
  9. public static void main()
  10. {
  11. Person p = new Person();
  12. Person p1 = new Person();
  13. }
  14. }

  1. class Person()
  2. {
  3. int age;//实例变量随着对象的建立而存在于方法区中,生命周期短,随着对象的消失而消失。
  4. static String name;//类变量,随着类的加载存在于方法区中,随着类的加载而加载,随着类的消失而消失,生命周期最长。
  5. Person()
  6. {
  7. }
  8. Person(int age,String name)
  9. {
  10. }
  11. }
  12. class Test()
  13. {
  14. public static void main(String[] args)
  15. {
  16. Person p1 = new Person(27,"Tom");
  17. Person p2 = new Person(22,"Jack");
  18. System.out.println(p1.name+"***"+p2.name); //输出的name都是Tom,static修饰的类的属性属于静态的成员变量,脱离了对象而独立的存在的,所以值Tom,用static修饰的成员变量或者成员方法可以使用:类名.成员 调用。
  19. }
  20. }

实例变量和类变量的区别:
- 存放位置:类变量随着类的加载而存在于方法区,实例变量随着对象的建立而存在于堆内存中
- 生命周期:类变量生命周期最长,随着类的消失而消失,实例变量生命周期随着对象的消失而消失

静态使用的注意事项:

静态的优缺点:

static什么时候使用:

静态函数什么时候定义:

主函数是静态的

主函数:是一个特殊的函数,作为程序的入口,可以被jvm调用,没有void返回值。

  1. class MainDemo
  2. {
  3. public static void main(String[] args)//main:不是关键字,但是是一个特殊的单词,可以被jvm识别,(String[] args):函数的参数
  4. {
  5. }
  6. public static void main(int x)//主函数也可以重载
  7. {
  8. System.out.println(args.length);
  9. }
  10. }
  11. String[] args = new String[3];
  12. String[] args = null;

jvm在调用主函数时,传入的是new String[0];

  1. class Person()
  2. {
  3. int age;//实例变量随着对象的建立而存在于方法区中,生命周期短,随着对象的消失而消失。
  4. static String name;//类变量,随着类的加载存在于方法区中,随着类的加载而加载,随着类的消失而消失,生命周期最长。
  5. Person()
  6. {
  7. }
  8. Person(int age,String name)
  9. {
  10. }
  11. }
  12. class Test()
  13. {
  14. public static void main(String[] args)
  15. {
  16. Person p1 = new Person(27,"Tom");
  17. Person p2 = new Person(22,"Jack");
  18. System.out.println(p1.name+"***"+p2.name); //输出的name都是Tom,static修饰的类的属性属于静态的成员变量,脱离了对象而独立的存在的,所以值Tom,用static修饰的成员变量或者成员方法可以使用:类名.成员 调用,一般的调用普通的类中的方法,先创建该类的对象,然后使用:对象名.方法,调用。
  19. }
  20. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注