A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王松朝 金牌黑马   /  2011-7-19 18:37  /  1886 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

静态类、方法、变量与非静态的都有哪些区别呢? 我知道的静态的与类无关,可以直接调用. 还有别的区别么?

3 个回复

倒序浏览
黑马网友  发表于 2011-7-19 20:24:40
沙发
谁说静态与类无关的?
静态和非静态的区别有:
1 静态随着类的加载而加载,非静态随着对象的建立而进入内存。静态是优先于对象存在的。
2 静态在内存中的存储位置在方法区中的静态区,而非静态存储在其所属对象的内存空间中,也就是堆内存。
3 静态是共享数据,而非静态是某个对象特有的。
4 静态是属于类的,用类调用,非静态是属于对象的,需要先new一个对象实例,再用这个对象调用

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 我很赞同

查看全部评分

回复 使用道具 举报

回复 楼主 的帖子

楼主的意思不完全正确,我不懂什么叫静态与类无关!
静态方法和静态变量类似。
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 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 我很赞同

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-19 23:57:37
板凳

回复 藤椅 的帖子

自己想出来的,还是借助别人的 ....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马