- 由于面向过程编程在构造系统时,无法解决重用,维护,扩展的问题,而且逻辑过于复杂,代码难懂,因此,人们开始想能不能让计算机直接模拟现实的环境,以人类思路方法解决问题,产生了面向对象编程
- 程序执行过程中内存的管理
public class cat{
private static int sid=0;
private String name;
int id;
Cat(String name){
this.name=name;
id=sid++;
}
public void info(){
System.out.pringln("My name is"+name+"No."+id);
}
public static void main(String arg[]){
Cat.sid=100;
Cat mimi=new Cat("mimi");
Cat pipi=new Cat("pipi");
mimi.info();
pipi.info();
}
}
- static存放在数据区,当某一个变量被new出来的时候,他是属于某一个类的,他不属于某一个对象,任何一个对象都可以访问这个值,访问的都是同一个值,没有对象也可以访问,类名.sid来访问(一定是静态的)
- 当某一只猫被new出来,它有一个id 还有一个name(非静态成员变量)
再new一只,又有一个id和name
Cat.sid=100;
Cat mimi=new cat("mimi");
Cat(string name){
this.name=name;
id=sid++;
}
this.name=name;
- 构造方法完成,栈中的name消失了
- Cat pipi(局部变量) = new cat(“pipi”);是同样的方法
- 局部变量一般都分布在栈里
- 实例化的分配在堆中
- 静态变量分布在数据区