一、成员变量
位于类里、方法外,分为实例变量和静态变量
实例变量
1)属于对象的,存在堆中
2)有几个对象就有几份实例变量
3)必须通过对象名.来访问
静态变量---属于类
所有对象的数据都一样时使用
1)由static修饰,不属于对象的数据结构,属于类的,存在方法区中
2)无论该类创建了多少对象,都只有一份
3)属于类的变量,常常通过类名.来访问
二、静态方法--属于类
方法的操作仅与参数相关而与操作对象无关时使用
1)由static修饰,属于类的,存在方法区中,只有一份
2)属于类的方法,常常通过类名.来访问
3)没有隐式的this传递
4)静态方法中不能直接访问实例成员(变量/方法)
注意:静态方法没有隐式的this,就意味着没有对象,而实例成员(变量/方法)必须通过对象进行访问,所以静态方法中不能直接访问实例成员,需要自己建一个对象,再通过对象访问。
三、静态块--属于类
常常用于加载/初始化静态资源(图片、音频)
1)由static修饰,属于类的,类被加载期间自动执行
2)类只被加载一次,所以静态块也只执行一次,结果存在方法区
3)不能直接访问实例成员(变量/方法)
说明:
实例方法(有隐式的this)
通常的方法都会涉及到对具体对象的操作,这些方法在调用时,需要隐式的传递对象的引用(this)
例如:调用distance方法时,除了传递p2参数外,还隐式的传递了p1作为参数,在方法中的this关键字即表示该参数p1