java笔试题(2)

  • 简述构造器的运行机制

首先要注意的是的构造器并不是函数,所以他并不能被继承,这在我们extends的时候写子类的构造器时比较的常见,即使子类构造器参数和父类的完全一样,我们也要写super就是因为这个原因。

构造器的修饰符比较的有限,仅仅只有public private protected这三个,其他的例如任何修饰符都不能对其使用,也就是说构造器不允许被成名成抽象、同步、静态等等访问限制以外的形式。

因为构造器不是函数,所以它是没有返回值的,也不允许有返回值。但是这里要说明一下,构造器中允许存在return语句,但是return什么都不返回,如果你指定了返回值,虽然编译器不会报出任何错误,但是JVM会认为他是一个与构造器同名的函数罢了,这样就会出现一些莫名其妙的无法找到构造器的错误,这里是要加倍注意的。

Java在构造实例时的顺序

构造的粗略过程如下

1、分配对象空间,并将对象中成员初始化为0或者空,java不允许用户操纵一个不定值的对象。

2、执行属性值的显式初始化(这里有一点变化,一会解释,但大体是这样的)

3、执行构造器

4、将变量关联到堆中的对象上

  • 概述成员变量与局部变量有什么不同

(1)成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型。

(2)成员变量存储在堆,局部变量存储在栈。

(3)存在时间不同。

(4)成员变量有默认值,(被final修饰且没有static的必须显式赋),局部变量不会自动赋值

  • 什么是封装,封装有什么特点

封装是JAVA面向对象的特点的表现,封装是一种信息隐蔽技术它有两个含义,即把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位,以及尽可能隐藏对象的内部结构,封装的特点是:对象以外的部分不能随意存取对象的内部数据,从而有效的避免了外部错误对它的“交叉感染”,使软件错误能够局部化,大大减少查错和排错的难度。

  • 简述final修饰符的使用和作用

final修饰符在定义常量时,通常采用大写形式。Final常量可以在声明的同时赋初值,也可以在构造函数中赋初值,总之,必须在使用前对其初始化,并且只能赋值一次。为了确保某个函数的行为在继承过程中保持不变,并且不能被覆盖,可以使用final方法。被final说明的类,不允许被继承的类。

我是天王盖地虎的分割线                                                                

上一篇:解决Spring MVC @ResponseBody返回html中中文字符串乱码问题


下一篇:求最长回文子串 - leetcode 5. Longest Palindromic Substring