5.面向对象一

一:面向对象内存图(简易的)

(上课内容讲解笔记)

                栈    堆


解释:

有一个Car.java和Test.java两个类

(1)左边是栈,右上是堆,右下指的方法区

(2)main方法入栈

(3)方法区里执行的是.class文件,不是.java。

方法区存放类的属性和方法。

(4)执行Car c1,在栈里会开辟一个空间,执行完new Car后,这个空间存放的就是对象在堆里面的地址

(5)执行new Car后,堆里会有一个空间,里面存放的是  属性初始值和方法的地址(即方法区的地址)。

(6)调用c1的属性后,属性从原来的初始值变成赋予的值,调用方法后,找到堆里的方法的地址,根据地址找到方法区,方法此时入栈。

(7)方法执行完后,会自动出栈,移除。





二:成员变量和局部变量

 

           成员变量

局部变量

在类中的位置不同

 类中方法外

方法内或者方法声明上

在内存中的位置不同

堆内存

栈内存

生命周期不同

随着对象的存在而存在,随着对象的消失而消失

随着方法的调用而存在,随着方法的调用完毕而消失

初始化值不同

有默认的初始化值

没有默认的初始化值,必须先定义,赋值,才能使用。


根据上图过程,加深理解


三:匿名对象

匿名对象:就是没有名字的对象,是对象的一种简化表示形式

匿名对象的两种使用情况:1.对象调用方法仅仅一次的时候   2. 作为实际参数传递

new Car();  //匿名函数
new Car().color="red";
System.out.println(new Car().color); //结果是null,每new一次,就是一次新的对象,color初始值是null
		

注意每new一次,就产生一个匿名对象,每个匿名对象是不同的。


四:构造方法

格式:方法名与类名相同;没有返回值类型,连void都没有;没有具体的返回值

注意:1.如果你不提供构造方法,系统会给出默认构造方法;

     2.如果你提供了构造方法,系统将不再提供;

       3.构造方法也是可以重载的

构造方法的作用:对象的数据进行初始化


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值