java面向对象(Static关键字)-java读书笔记
java面向对象(Static关键字)
Q:什么时候用static?
A:当类中多个对象有共同数据("CN"),不是指共同属性(country)。可将共同数据单独存储,以节省空间。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static(静态)关键字是一个修饰符,用于修饰成员(成员变量或成员函数)。被修饰后的成员具备以下特点:
1)随着类的加载而加载。 //只要类存在,被static修饰的变量就一直存在。
2)优先于对象存在。//静态先存在,对象后存在。比如Person类加载时,类变量country就已存在,而实例变量name不存在。
3)被所有对象所共享。
4)可以直接被类名调用。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
类变量与实例变量的区别:
1)存储位置。类变量在方法区(共享区或数据区);实例变量在于堆内存。
2)生命周期。类变量随着类的消失而消失;实例变量随着对象的消失而消失。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
使用注意:
1)静态方法只能访问静态成员。 //非静态无访问局限性
2)静态方法中不可以写this、super关键字。 //因为静态优先于对象存在
3)主函数是静态的。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static的好坏
优点:1)省空间;2)当没对象时,可用类名调用。
缺点:1)生命周期过长,一直消耗内存,不建议过多使用;2)有访问局限性(先存在的静态不可访问后存在的非静态)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
class Person
{
String name; //特有的数据。成员变量,对象的变量,叫实例变量
static String country="CN"; //共享的数据。静态的成员变量,叫类变量
public static void show()
{
//System.out.println(name+",,,"+country);
//System.out.println(country);
//System.out.println(name); //无法从静态上下文中引用非静态 变量 name。因为name是实例变量,但没有对象。
this.haha(); //无法从静态上下文中引用非静态 变量 this。同上。
}
public void haha(){}
}
class Test
{
public static void main(String[] args)
{
/*
Person p = new Person();
p.name="张三";
p.show();
System.out.println(p.country); //对象调用
System.out.println(Person.country); //类名调用
*/
Person.show();
}
}
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5595.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
