1、内存中存放的位置:(static修饰的方法和属性保存在方法区中,但是方法区也是堆的一部分)

内存的分区

java 中static关键字注意事项-LMLPHP

2、什么样的属性可以定义为静态数据

例如:

class person{

public String name;

pulic String guoji;

public int age;

punblic person(Stirng name,String guoji,int age){

this.name=name;

this.guoji=guoji;

this.age=age;

}

}

如果在以上类中,guoji属性对于多有对象而言都是一样的(比如说值都:中国),那么这个时候就应该吧guoji属性设置为静态的

例如:

public static String guoji=“中国”;

这个做的目的是节省内存的开销,但是缺点是,一但某一个实力对象的国际重新赋值后,例如赋值为“美国”,那么所有的实例对象的国籍都变成了“美国”。

3、static方法的如何调用外部的方法

首先,static方法内部是不能直接调用非static方法的,因为static方法不属于对象,而是属于类,他是随着类的加载而加载的,而非static方法则需要通过实例化对象后才能调用,所有,如果想在static方法内部调用非static方法时,则必须要先实例化对象,然后在用对象点该方法才可以。

05-20 23:15