刚又看了面向对象05的内容,主要学了static关键字的使用,发现比this更难理解。
学习之前,先了解了java使用的内存分配,有四个:栈内存(保存对象的名称),堆内存(保存对象的具体内容/属性),全局代码区(存放所有方法)和全局数据区(存放static类型的属性)。
在类中写的一个属性,如果使用static声明,则表示此属性为公有属性,即:所有对象都可以访问该属性。 使用static定义的属性或方法,可以通过类名称直接调用。比如:类.static 属性,类.static 方法,在程序运行时时直接使用类的名称,证明只有static类型的方法才能直接使用类的名称来调用这个方法。
不好理解的一点是:静态方法不能调用非静态属性或方法,即非静态变量不能在静态方法中出现。非静态方法可以调用静态属性或方法。
static方法中不要出现this调用。
PS:用static关键字可以定义类变量和类方法。
另外学习了四种代码块:
普通代码块:是写在一个方法中的代码块。
构造块:直接写在类中的一语句块,构造块优先于构造方法执行,可以执行多次。
静态块:是直接写在类中,通过static声明的语句块,优先于构造块和构造方法执行,做用是为静态属性初始化,只执行一次。(PS:一个类的静态属性只能有一个值)。
同步代码块(多线程)。