黑马程序员技术交流社区

标题: static的注意事项 [打印本页]

作者: wsf110934    时间: 2015-12-12 23:33
标题: static的注意事项
static在同一个类中静态只能访问静态,非静态可以访问静态也可以访问非静态.但为什么main主方法里创建对象为什么可以在静态中访问非静态?

作者: zcbcba123    时间: 2015-12-13 00:16
static main中可以访问非静态吗?
作者: 唐洪超    时间: 2015-12-13 00:20
静态方法是属于类的,而普通方法是属于对象的。
属于类的静态方法可以在对象不存在的时候就能访问到,而普通方法必须先new一个对象才能用这个对象访问。当我们访问调用静态方法的时候(使用类名.静态方法名)这个时候就没有对象创建,所以普通方法是访问不到的。为了避免这种错误,所以java就不允许在静态方法中访问非静态方法。

还有纠正你的错误,main方法也满足我上面说的,你仔细看下,main方法中是不是先创建的对象,然后用对象去访问的呀。
作者: 744919632    时间: 2015-12-13 00:25
static : 关键字, 静态的意思
可以用来修饰类中的成员(成员变量,成员方法)
注意: 也可以用来修饰成员内部类

特点:
被静态所修饰的成员,会被所有的对象所共享
被静态所修饰的成员,可以通过类名直接调用,方便
Person.country = "中国";
Person.method();

注意事项:
静态的成员,随着类的加载而加载,优先于对象存在
在静态方法中,没有this关键字
静态方法中,只能调用静态的成员(静态成员变量,静态成员方法)

静态变量和成员变量的区别?
内存中的位置:
静态变量: 在方法区的静态区中
成员变量: 在堆内存中

生命周期:
静态变量: 随着类的加载而存在,随着类的消失而消失
成员变量: 随着对象的创建而存在, 随着对象的消失而消失

调用方式:
静态变量: 通过对象名方式调用,也可以通过类名方式调用
p.age
Person.age
成员变量: 通过对象名方式调用
p.age

所属不同:
静态变量,随着类的加载而存在,与类相关的,类变量
成员变量:随着对象的创建而存在,与对象相关的,实例变量,成员变量
作者: 孙志明    时间: 2015-12-13 19:22
好详细的讲解,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2