对象/类 内存存储情况

今天,学习了面向对象的概念,和大家分享一下我的学习心得:


  面向对象和面向过程的两种不同的编程思想影响着每一个程序猿,这两种编程思想甚至会影响我们的世界观。总的来讲,面向过程是我们处理熟悉的问题时采用,而面向对象则是我们处理我们不熟悉或者变化大的问题域时采用,都是一种自然化的体现。

   java是一门面向对象的编程语言,所以需要去理解面向对象的思想,进而理解对象和类的概念和他们的关系,最重要的是他们如何使用。为了更好的理解,我们需要知道在定义类时,其每一句指令,在内存中是如何存储和处理的,才能输出我们想要的结果。

在这里我给大家举一个例子,分析一下其在内存中的情况:

首先,定义一个Boy(类名首字母要大写)类:




上面定义好Boy和Girl两个类,下面测试一下:


针对这个例子,我们分析一下其在内存中是如何存储的。(程序执行总是从main方法开始到结束)

第一句Boy boy = new Boy();是定义一个boy对象,在内存中boy里面放着Boy类的引用,由于没我们没有对类里面的属性初始化,所以计算机默认:基本数据类型设为0,引用数据类型设为NULL。所以在这里Boy类里面的boyOfName=NULL。

第二句Girl girl = new Girl();与第一句一样。

第三句boy.boyOfName = "小明"; 指令中“.”可以读作“的”,boyOfName存的是字符串的引用,这条指令是将“小明”的引用赋值给boy.boyOfName,(注意java中只存在值传递,不存在引用或其他传递)

第四句girl.girlOfName = "小花";与第三局一样

第五句boy.kiss(girl); 这条指令调用了Boy类的方法,所以程序执行顺序被打乱,程序进入方法内执行:

public void kiss(Girl girl){
System.out.println(this.boyOfName+"说:亲爱的,亲一个!");
girl.respond();
}

在方法中先打印,再调用Girl类的方法:(类与类之间相互调用:has a/use a  我这里采用的use a)

程序再进入respond方法内:

public void respond(){
System.out.println(this.girlOfName+"说:讨厌,来嘛!");
}

打印后,respond方法结束,返回调用出(即kiss方法内),kiss方法也结束,返回kiss方法调用处即main方法中,main主方法结束,程序运行完毕,方法中的变量全部清除。由此我们就看到我们的输出结果为:



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值