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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张周飞 于 2014-7-4 09:55 编辑

/**
static 关键字的修饰用法
1:static关键字修饰的成员变量实质上就是全局变量。存在方法区 都只存一份使之多对象使用一份数据。
2:static关键字修饰的方法 无需本类对象即可调用,属于类,
调用的方式:类名 静态属性/静态方法()
3:static关键字可以修饰一个类。
**/
public class StaticS{
       public static void main(String[] args){
                   Mistress M1= new Mistress("小红");
                   Mistress M2= new Mistress("小菲菲 ");
                   //M1.profession="小三"; 都打印出都是小三的话 说明就是在就在方法区了
                    M1.desc();    //打印出 我的名字是:小红,我的职业是:情人
                   M2.desc();    //打印出 我的名字是:小菲菲,我的职业是:情人
                   Mistress.promosion();  //调用的方式:类名 静态属性/静态方法() 。以下是调用静态方法以后的结果
                   M1.desc();   //打印出 我的名字是:小菲菲,我的职业是: 情妇
                   M2.desc();     //打印出 我的名字是:小菲菲,我的职业是:情妇                 
  }
}
/*情妇类*/
class Mistress{
        String name;
        static String profession="情人";   //默认值
        public Mistress(String name){
                this.name=name;
        }
        public void desc(){
                System.out.println("我的名字是:"+name+",我的职业是:"+profession);
                //promosion() 放在这里是可以调用的  调用静态方法。//实例成员可以引用调用静态成员。
        }
        public static void promosion(){
                System.out.println("转正了");
                profession="情妇";
                //desc();这里不可以这样的写 不然会报错,在编译期间报错。对象是在实例产生 运行的时候期间才会调用,
                //静态的方法和属性在类加载器后就会存在方法区内存中,此时还没有产生对象,而普通方法和属性属于对象,所以不能调用。
                //静态成员、静态成员之间 ,可以相互引用。实例成员、实例成员之间可以引用。
                //静态成员不可以引用调用实例成员。所以desc(); 报错,实例成员需要创建对象时才有其空间和值参与运行,而静态成员无需生成对象就已经存                在。存在方法区里
        
        }

}
/**
上面题目的内存结构分析


*/





/**
自己总结的------内存结构分析图: 愿能帮助大家理解
**/






内存结构分析.jpg (83.07 KB, 下载次数: 13)

内存结构分析.jpg

评分

参与人数 1技术分 +2 收起 理由
李小然 + 2

查看全部评分

2 个回复

倒序浏览
大神 图有点小。能传下清楚点的吗 十分感谢。
回复 使用道具 举报
学习了,谢谢分享 就是图看得有点不爽~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马