《黑马程序员》Static关键字的用法

来源:互联网 发布:舆情监测系统python 编辑:程序博客网 时间:2024/04/30 00:43

 ----------- android培训java培训、java学习型技术博客、期待与您交流! ------------ 

[类中定义的变量是成员变量,也称为实例(对象)变量。如果该变量被static修饰,称静态变量,也称为类变量。]

1,它是一个修饰符,用于修饰成员(成员变量和成员函数)

2,被静态修饰后的成员变量,可以被对象共享。

3,静态优先于对象存在。

4,对于静态成员,除了对象可以访问之外,还可以被类名直接访问。

类名.静态成员

 5, 静态随着类的加载而加载,随着类的消失而消失。

 6, 对象特有的数据存储到对象的堆内存中。

 7, 对象的共享数据存储在方法区的静态区中。

特点:(栈内存只是方法的运行区,而方法真正是存在于方法区中或叫数据共享区中的,随着类的一加载方法就已经进了方法区。方法区中有个静态区,用来存放静态属性和静态方法既能被对象调用也可被类名调用,如果没有创建对象就只能被类名调用。所以静态属性和方法是优先于对象存在的)(非静态方法只能被对象调用)


静态什么时候用?

1,静态变量。

当对象中的数据都相同时。就将该数据定义成静态的。

被所有对象共享即可。没有必要每一个对象都存储一份,那样只是浪费空间。

2,静态函数。

如果函数中没有访问到对象中的特有数据。

那么该函数需要被静态修饰。不需要创建对象,就可以通过类名    访问该函数了。

静态代码块:(随着了类的加载而执行,且只执行一次,用于给类进行初始化,可以通过静态代码块来验证类是否被加载)

静态代码块      static

{

System.out.println("B");

}

构造代码块用于给所有对象进行初始化】


成员变量和静态变量的区别:

1,在内存空间存储的位置。

成员变量存储于对象所在堆内存中。

静态变量存储方法区的静态区中。

2,生命周期。

成员变量随着所属对象的建立而出现,随着所属对象变成垃圾被         回收而消失。静态变量随着所属的类加载而出现,随着类的消失而消失 。

3,调用方式。

成员变量只能被对象调用。

静态变量既可以被对象调用,也可以被类名调用。

4,数据体现。

成员变量的值称为对象中的特有数据。

静态变量的值称为对象中的共享数据。

静态使用的注意事项:

1,静态方法只能访问静态成员(所以静态虽然多了一种用类名调用  的方式,但是也出现了访问的局限性)

非静态方法既可以访问静态又可以访问非静态。

因为非静态们,都所属于对象。

2,静态方法中不可以出现thissuper关键字。

因为this代表对象,static方法存在时还没有对象呢.

3,主函数是静态的。




原创粉丝点击