构造器和对象

构造器

构造器是一个特殊的方法,定义构造器的语法格式与定义方法的语法格式很像,定义构造器的语法格式如下:
[修饰符] 构造器名(形参列表)
{
//由零条到多条可执行性语句组成的构造器执行体
}
构造器语法格式的详细说明如下。
修饰符:修饰符可以省略,也可以是public、protected、private其中之一。
构造器名:构造器名必须和类名相同
形参列表:和定义方法形参列表的格式完全相同。
值得指出的是,构造器既不能定义返回值类型,也不能使用void定义构造器没有返回值。
如果为构造器定义了返回值类型,或使用void声明构造器没有返回值,编译时不会出错,但Java会把这个所谓的构造器当成方法来处理。 

构造器问题

构造器不是没有返回值吗?为什么不能使用void修饰呢?
简单地说,这个是java的语法规定。实际上类的构造器是有返回值的,当我们用new关键字来调用构造器时,构造器返回该类的实例,可以把这个类的实例当成构造器的返回值,因此构造器的返回值类型总是当前类,无须定义返回值类型。但必须注意:不能在构造器里显示使用return来返回当前类的对象,因此构造器的返回值是隐式的 

对象的产生和使用 

创建对象的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建这个类的实例。如果访问权限允许,类里定义的方法和Field都可以通过类或实例来调用。类或实例访问方法或Field的语法是:类.Field|方法,或者实例.Field|方法,在这种方式中,类或实例是主调者,用于访问该类或该实例的指定Field或方法。static修饰的方法和Field,即可通过类来调用,也可通过实例来调用;没有使用static修饰的普通方法和Field,只可通过实例来调用。

对象、引用和指针 

在创建一个实例的代码(Person p= new Person())中实际产生了两个东西:一个是引用变量(栈),一个是对象(实例)(堆)。
类也是一种引用数据类型,因此我们产生出来的引用类型变量实际上只是个引用,它被存放在栈内存中,指向实际的对象;而真正的对象则存放在堆内存中。
栈内存中的引用变量并未真正存储对象的数据,对象的数据实际存放在堆内存里;当一个对象被创建成功以后,这个对象将保存在堆内存中,java程序不允许直接访问堆内存中的对象,只能通过该对象的引用操作该对象。也就是说,不管是数组还是对象,都只能通过引用来访问它们。
堆内存里的对象可以有多个引用,即多个引用变量指向同一个对象。
如果堆内存里的对象没有任何变量指向该对象,那么程序将无法再访问该对象,这个对象也就变成了垃圾,java的垃圾回收机制将回收该对象,释放该对象所占的内存区。因此,如果希望通过垃圾回收机制回收某个对象,只需切断该对象的所有引用变量和它之间的关系即可,也就是把这些引用变量赋值为null。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值