变量
成员变量
定义在类体内方法外的变量为成员变量;
分为:类变量、实例变量;
类变量——全局变量
变量前定义有static关键字的为类变量,储存在类的公用区,属于类所有,所有该类的对象共享这一对象;
类变量保存在类的内存中,当第一次加载类的啥时候,就开辟了类的内存,类变量就存在了,直到程序运行结束。
类名.变量名; 对象名.变量名;
实例变量
没有static关键字的为实例变量,属于对象所有,保存在对象的内存空间中;
对象的变量,只有创建对象后,才能开辟出实例变量的内存空间,直到对象消失才消失。
对象名.变量名;
package test08;
public class Circle {
public static int numOfCircle=0;//类变量
private double radius;//实例变量
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public Circle(double radius) {
this.radius=radius;
numOfCircle++;//每创建一个对象,增加一
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Circle.numOfCircle="+Circle.numOfCircle);//类变量,可以直接类名调用
Circle c1=new Circle(2);//创建实例对象1,调用Circle构造方法
System.out.println("Circle.numOfCircle="+Circle.numOfCircle);
c1.radius=c1.radius+1;
System.out.println("c1.radius="+c1.radius);
Circle c2=new Circle(10);//创建实例对象2
c2.radius=c2.radius+1;
System.out.println("c2.radius="+c2.radius);
System.out.println("c1.numOfCircle="+c1.numOfCircle);
System.out.println("c2.numOfCircle="+c2.numOfCircle);
}
}
局部变量
定义在方法中的变量为局部变量,一种为形参,一种为方法体内变量;随方法的结束就结束,且方法体中的局部变量必须赋值后才能使用。
方法
类方法
方法定义时前面有static字块的为类方法;且类方法只能使用类变量
对象名.方法();类名.方法()
实例方法
方法前面没定义static字快的为实例方法;
对象名.方法();
static代码块
在类体内和方法外只能定义成员变量,但是可以定义static代码块来打破这种情况,将static代码块放在方法外内部可以放普通变量;
final修饰符
final修饰类变量
final修饰的类变量只能被赋值一次,以后不能改变;
[访问修饰符] static final 数据类型 变量名[=value];
final修饰实例变量
final修饰的实例变量只能被赋值一次,以后不能改变
[访问修饰符] final 数据类型 变量名[=value];
final修饰局部变量
final修饰的局部变量只能被赋值一次,以后不能改变;
final 数据类型 变量名[=value];
final修饰成员方法
final修饰的成员方法不能被子类覆盖
[访问修饰符] final 数据类型 方法名([参数列表]){}
final修饰类
final修饰的类不能被继承
[访问修饰符] final class 类名{}
对象的初始化顺序
无继承时:1、先类变量和static代码块;
2、实例变量;
3、构造方法;
有继承时:1、父类的类变量和static代码块;
2、子类的类变量和static代码块;
3、父类的实例变量;
4、父类的构造方法;
5、子类的实例变量;
6、子类的1构造方法;
·