1、内存中存放的位置:(static修饰的方法和属性保存在方法区中,但是方法区也是堆的一部分)
内存的分区
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方法时,则必须要先实例化对象,然后在用对象点该方法才可以。