- Static(重点)
java中的五大存储区域:
栈、堆、方法区、寄存器区、本地方法区
寄存器区:主要是线程的存储区域
本地防区:第三方语言的存储区域,例如:c/c++
重点分析三大区域:堆,栈,方法区
栈:存局部变量 (引用对象,基本变量)
堆:new对象,成员属性
方法区:class文件,静态区(static修饰),常量池(字符串常量)-往往方法区的东西只有一份
1.1 静态属性
成员属性案例
class MyClass{
int a; //成员属性
}
public class Test1 {
public static void main(String[] args) {
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
obj1.a = 3;
obj2.a = 5;
System.out.println(obj1.a+"---"+obj2.a);
}
}
静态属性案例
实例属性 VS 静态属性
实例属性: 在堆区,属于对象,通过对象调用;每个对象独有的一份
静态属性: 在方法区,属于类,推荐使用类名调用;所有对象共享同一份
class MyC{
static int a;
}
public class Test2 {
public static void main(String[] args) {
MyC obj1 = new MyC();
MyC obj2 = new MyC();
//The static field MyC.a should be accessed in a static way
obj1.a = 3; //MyC.a = 3; 静态属性属于类,推荐通过类名调静态属性
obj2.a = 5;
System.out.println(obj1.a+"---"+obj2.a);
}
}
静态属性课堂案例
//案例: 统计对象new了多少次
//分析: 先编写面向对象; 每new一次,则次数++
class A{
static int count; //初始为0
public A(){
count++; //使用静态属性进行统计
}
}
public class Test3 {
public static void main(String[] args) {
new A();
new A();
new A();
System.out.println(