本帖最后由 张周飞 于 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(); 报错,实例成员需要创建对象时才有其空间和值参与运行,而静态成员无需生成对象就已经存 在。存在方法区里
}
}
/**
上面题目的内存结构分析
*/
/**
自己总结的------内存结构分析图: 愿能帮助大家理解
**/
|
|