观小呆
2019-04-10 15:52
看过这节课后,有些疑问,求会的小伙伴们帮忙解答一下。 问题如下: a.这节课中,看到了“静态成员”四个字字,而不是静态变量或者静态方法。 疑问1:“成员”的意思是不是变量和方法的统称,还是单独只指代变量,不包含方法? b.本节课老师讲了“静态访问静态或非静态”,“普通访问静态或非静态”。 疑问2:那么,“非静态访问静态或者非静态”呢?? c.静态和非静态关键字就在static,用它来区分。 疑问3:那么,除了访问方式不同,变量或者方法是否被static修饰,两者有什么本质上的意义吗?
这位同学很善于思考啊,我来回答一下
静态成员包含静态变量和方法,是所有用static修饰的东西的统称
非静态可以任意访问本类(注意是本类!)中的所有成员变量和所有方法
静态和非静态的本质就比较深了,涉及到java的内存处理和垃圾回收机制,你可以这样理解,静态和非静态所存储的位置是不同的,静态成员都存在静态池中,不可回收,只要程序运行起来就一直存在,非静态只有在用到是才创建,用完了就被回收了,所以程序中要尽量少用静态的东西,否则程序会越来越卡,因为静态占用了太多内存。
统称吧
在同类中,静态方法可以直接调用静态成员但是不能调用非静态成员,如果想调用非静态成员,可以先创建类的对象,然后通过对象来访问非静态成员。普通方法可以调用静态和非静态的变量
至于最后一个,个人感觉不同之处就是访问方式的不同吧
互相交流,希望不要嫌弃,回答全部来自老师的讲义。
a. 1-4节中讲了成员变量和局部变量,此时的成员是指成员变量的意思,变量似乎有几哥叫法,其中还有一个叫属性
在类中一般全部变量,称为成员变量,局部变量称为变量,在类的对象中,成员变量通常称为对象的属性
b. 1.9 Java 中的 static 使用之静态方法
“静态访问静态或非静态”指静态方法访问静态成员变量和非静态成员变量
“普通访问静态或非静态”指普通成员方法访问静态成员变量和非静态成员变量
“非静态访问静态或者非静态”指的就是普通成员方法访问静态成员变量和非静态成员变量
老师讲过
静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
c. 那么,除了访问方式不同,变量或者方法是否被
static
修饰,两者有什么本质上的意义吗?
Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。
其实个人并不太理解static修饰符,下面这句话似乎好像可以加深下理解,其实还是用的少,写了项目了我们的理解会更深层的
大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。然而在某些时候,我们更希望该类所有的对象共享同一个成员。此时就是 static 大显身手的时候了!!
Java入门第二季 升级版
530653 学习 · 6091 问题
相似问题