java.util.Vector 动态数组
get(index)
addElement(OBject obj)
size()
栈:局部变量
堆:new出来的结构,数组
方法区:类的加载信息,静态变量,常量
static关键字的使用:
static:静态的
static可以用来修饰:属性,方法,代码块,内部类
使用static修饰属性:类变量(或静态变量
使用static修饰的变量被类的所有对象所共享,类的所有对象共用一个静态变量
对比:不用static修饰的属性,称为:实例变量,每个对象拥有一份实例变量
通过对象a修改某个实例变量,不会影响其他对象同名的实例变量的值。
我们可以通过对象a去调用或修改静态变量的值,那抹会影响其他对象对此静态变量的调用
静态变量和实例变量在内存中分配的位置不同:
- 实例变量,随着对象的创建而产生,分配在堆空间中
- 静态变量,随着类的加载而产生的,分配在方法区里
静态变量的加载要早于对象的创建
静态变量 非静态变量(实例变量)
类 可以 不可以
对象 可以 可以
使用static修饰方法:静态方法(随着类的加载而加载)
静态方法 非静态方法(实例变量)
类 可以 不可以
对象 可以 可以
静态方法内:可以调用静态属性或者静态方法,不可以调用非静态属性和非静态方法
非静态方法内:可以调用非静态属性或者非静态方法,可以调用静态属性和静态方法
如何判断属性是否声明为:static? 是否需要类的多个对象类共享此属性;很多常量都声明为static 如何判断方法是否声明为:static? 操作静态变量的方法,工具类中的方法。(Math)