java main()方法是静态的。意味着不需要new(),就在内存中存在。而且是属于类的,但是对象还是可以调用的.
若干个包含这个静态属性和方法的对象引用都可以指向这个内存区域。这个内存区域发生改变对所有对象都是改变的
非静态的,就只有new()成对象才能使用。new出来的属性和方法只属于new出来的这个对象,相互之间不会干扰。
类 中国人{
public String name;
public int age;
public static string 国籍=“中国”;
public 中国人();
public 中国人(string n);
public void eat();
}
new出来中国人1,中国人2,中国人3,都可以指向static string 国籍=“中国”这个内存区域。
这个内存区域在方法区,不和其他属性和方法在同一个内存区域。其他非静态的属性和方法在堆区
new出来中国人1,中国人2,中国人3的name,age等可以根据不同的人有不同的赋值,相互之间不会干扰。
(更正:static属于类,但是对象可以调用.) static内存是类开辟的,所以static属于类.
static虽然对象可以调用,但是尽量不用对象调用,因为不同对象之间都调用static会乱
对JVM而言,stactic出来的内容以及常量,代码,在class加载的时候就会分配内存空间,而且是固定的。
而对象是在代码执行过程中new()出来的。可以回收和释放的。