对象的那点事(1)

1.类的构造方法(构造函数)
它是指在创建这个类的对象的时候,被自动调用的方法
系统默认会自动加上构造函数,如果没有定义的话。
自己写了一个构造方法,java就不在为你提供构造方法了。

2.属性
对应的是现实世界中某一类事物共有的属性(特征)。
比如人 ,人都有名称、身高、体重、年龄等。
创建对象的时候,每一个对象内部都有这些属性的对应值。
一个类可以有很多对象,每个对象的属性的值是不一样的。
比如我和你都属于人这一类。人有个属性就是是否有对象,我就没有,但是你可以有对象。

3.操纵对象
如何操作对象中的属性值。
C++用指针,java用引用、python中用变量、windows中用句柄。其实本质都是一样的,存储的是对象的内存地址。除pytho外,都必须指定这个指针指向的类型,通过这个指向对象的指针,可以对对象进行操作。在new对象的时候这个指针就已经确定好类型了。比如
Person p = new Person().p就是指针 指针类型就是Person类型
指针存储的是内存地址 根据这个地址可以找到这个对象的具体内容。
这个对象的大小是根据对象的属性类型决定的。类的属性可以是字符串类型,可以是数值类型等。具体语法可以先自行了解一下。这里讲一下概念。后面学了基础语法,回头看,将会理解的更加透彻,基础将会更加牢靠。比如一个long类型是8个字节,如果属性是两个long类型的,那么这个对象的大小就是16字节加上这个对象必须有的其他字节。
那p的大小如何计算。
32位操作系统 64位操作系统 说的是内存寻址范围。
比如32操作系统 那么p的大小就是32位,因为32位的操作系统只能记录2的32次方以内范围的地址。也就是说一个对象的最终地址减去起始地址小于等2的32次方。

比如64操作系统 那么p的大小就是64位,因为64位的操作系统只能记录2的64次方以内范围的地址。也就是说一个对象的最终地址减去起始地址小于等2的32次方。

内存是一小块一小块的每块的大小是一定的,如果对象的大小大于一小块的内存,那么这个对象肯定会放在多个小内存块中。所以指正记录的是这些小内存块的地址。

4.内存的回收
java、python自动回收
c++手动回收 忘记回收,内存越来越多,这个叫做内存泄漏(memory leak)。
回收多次,数据丢失。

任何语言,最难理解的就是该语言的内存使用以及释放。理解这点,这种语言就是透明的。

5.成员的方法(成员函数)
成员方法:在一个类中定义的方法(函数),一个类不仅可以有属性还可以有方法。
Java会被编译为可执行的class文件,当使用这个class的时候,也就是new对象的时候,将这个class文件加载到内存当中,加载的时候会构建一个方法表,将这个类中的所有的方法名记录在这个表中,方法也在这个内存中,当执行这个方法的时候,现在这个方法表中找到这个方法名,方法名对应的值记录着这个方法的内存地址范围,从而执行这个方法。所以方法名也是一个指针。

程序就是通过方法名这个指针来访问成员方法的。
通过方法名找到方法代码的过程叫做绑定

绑定分为静态绑定和动态绑定。
静态绑定就是在编译时期的绑定,比如private方法 final方法 static方法这类方法就是静态绑定,因为不需要程序运行起来就可以通过方法名找到对应的方法。

动态绑定就是除了用private final static 修饰符修饰意外的方法。就是动态绑定,需要程序运行起来以后才可以找到的方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值