Java面向对象编程(4)

1.介绍
  • 由于面向过程编程在构造系统时,无法解决重用,维护,扩展的问题,而且逻辑过于复杂,代码难懂,因此,人们开始想能不能让计算机直接模拟现实的环境,以人类思路方法解决问题,产生了面向对象编程
  • 程序执行过程中内存的管理
    这里写图片描述
2.分析
//根据代码分析内存
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

//当执行到main方法
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”);是同样的方法
3.小结
  • 局部变量一般都分布在栈里
  • 实例化的分配在堆中
  • 静态变量分布在数据区

猜你喜欢

转载自blog.csdn.net/lyj4495673/article/details/80956483
今日推荐