黑马程序员技术交流社区
标题:
static标记 静态与非静态有哪些区别
[打印本页]
作者:
王松朝
时间:
2011-7-19 18:37
标题:
static标记 静态与非静态有哪些区别
静态类、方法、变量与非静态的都有哪些区别呢? 我知道的静态的与类无关,可以直接调用. 还有别的区别么?
作者:
匿名
时间:
2011-7-19 20:24
谁说静态与类无关的?
静态和非静态的区别有:
1 静态随着类的加载而加载,非静态随着对象的建立而进入内存。静态是优先于对象存在的。
2 静态在内存中的存储位置在方法区中的静态区,而非静态存储在其所属对象的内存空间中,也就是堆内存。
3 静态是共享数据,而非静态是某个对象特有的。
4 静态是属于类的,用类调用,非静态是属于对象的,需要先new一个对象实例,再用这个对象调用
作者:
袁春龙
时间:
2011-7-19 22:47
标题:
回复 楼主 的帖子
楼主的意思不完全正确,我不懂什么叫静态与类无关!
静态方法和静态变量类似。
public class MyTest {
static int age = 5;
static void A(){
System.out.println("Hello!");
}
public static void main(String[] args) {
MyTest.A();//类名.方法名
System.out.println(MyTest.age);//类名.变量名
}
}
通常一个普通类不允许声明为静态的,只有一个内部类才可以。这时这个声明为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。如下代码所示:
public class StaticCls{
public static void main(String[] args){
OuterCls.InnerCls oi=new OuterCls.InnerCls();
}
}
class OuterCls{
public static class InnerCls{
InnerCls(){
System.out.println("InnerCls");
}
}
}
输出结果:InnerCls
[
本帖最后由 袁春龙 于 2011-07-19 22:48 编辑
]
作者:
匿名
时间:
2011-7-19 23:57
标题:
回复 藤椅 的帖子
自己想出来的,还是借助别人的 ....
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2