Jav编程日志2019/01/10

一、对象如何创建、存在于何以及如何保存和抛弃更有效率。

  对象存在堆上,堆又可以称为可垃圾回收的堆。方法在栈上,并且方法会被堆在一起。当调用一个方法时,该方法会在调用栈的栈顶。如果局部变量是个对该对像的引用,只有变量本身会放到栈上。但是对象无论如何都是运行在堆上。

二、为什么要理解栈与堆的机制?

1、如果想要了解变量的有效范围、对象的建立、内存管理、线程和异常处理,则认识堆与栈是很重要的。

2、实例变量是声明在类中方法之外的地方。局部变量声明在方法或方法的参数上,并且所有局部变量都存在于栈上相对应的堆栈块中。不管是实例变量或者局部变量,对象本身都会在堆上。

三、既然编译器会帮你写构造函数,为什么要自己写构造函数?

  如果你在创建对象时需要有程序代码帮忙初始化,那你就得自己编写构造函数。例如你需要通过用户的输入来完成对象的创建。

四、如何分辨构造函数和方法?

  JAVA可以有与类同名的方法而不会变成构造函数。其中的差别在于是否有返回类型。构造函数不会有返回类型。

五、构造函数会被继承吗?

  构造函数不会被继承。

编译器一定会帮你写出没有参数的构造函数吗?

  不会,如果你已经写了一个有参数的构造函数,并且你需要一个没有参数的构造函数,则你必须自己手动写。而且,如果类有一个以上的构造函数,则参数一定要不一样。

七、构造函数应该公有的吗?

  不,构造函数可以公有、私有或者不指定的。

八、一个私有的构造函数有什么用?没有人能够调用它,所以也就没有人能够创建该对象?

 私有不是完全不能存取,它代表该类以外不能存取。

、在创建对象时,所有继承下来的构造函数都会在子类对象创建时期执行。因此执行new指令是个重大事件,它会启动构造函数的连锁反应。还有,就是抽象的类也有构造函数。虽然你不能对抽象的类执行new操作,但是抽象的类还是父类,因此它的构造函数会在具体的子类创建出实例时执行。构造函数在执行的时候,第一件事是会去执行它的父类的构造函数,这会连锁到Object这个类为止。

、调用父类构造函数的唯一方法是调用super()。

十一、方法可以抓住其他方法所抛出的异常。异常总是会丢回给调用方。会抛出异常的方法必须要声明它有可能会这么做。

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章