Java 程序员经典面试题集大全(二十五)
使用 final 修饰的实例方法在其所属类的子类中不能被替换(overridden);
使用 final 修饰的静态方法在其所属类的子类中不能被重定义(redefined)而隐藏(hidden);
3、用 final 修饰的变量最多只能赋值一次,在赋值方式上不同类型的变量或稍有不同:
静态变量必须明确赋值一次(不能只使用类型缺省值);作为类成员的静态变量,赋值可以在其声明中通过初始化表达式完成,也可以在静态初始化块中进行;作为接口成员的静态变量,赋值只能在其声明中通过初始化表达式完成;
实例变量同样必须明确赋值一次(不能只使用类型缺省值);赋值可以在其声明中通过初始化表达式完成,也可以在实例初始化块或构造器中进行;
方法参数变量在方法被调用时创建,同时被初始化为对应实参值,终止于方法体 (body)结束,在此期间其值不能改变;
构造器参数变量在构造器被调用(通过实例创建表达式或显示的构造器调用)时创建,同时被初始化,为对应实参值,终止于构造器体结束,在此期间其值不能改变;
异常处理器参数变量在有异常被 try 语句的 catch 子句捕捉到时创建,同时被初始化为实际的异常对象,终止于 catch 语句块结束,在此期间其值不能改变;
局部变量在其值被访问之前必须被明确赋值;
122、在二进制数据中,小数点向右移一位,则数据()
**A、**除以 10
**B、**除以 2
**C、**乘以 2
**D、**乘以 10
答案:C
**分析:**可以看个例子
101.1 对应的十进制为 2^2*1 + 2^1*0 + 2^0*1 + 2^-1*1 = 5.5 小数点右移一位
1011 对应的十进制为 2^3\
*1 + 2^2*0 + 2^1*1 + 2^0*1 = 11 所以是扩大到原来的 2 倍
123、面向对象的特征有哪些方面?
答:面向对象的特征主要有以下几个方面:
**1、抽象:**抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
**2、继承:**继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java 与模式》或《设计模式精解》中关于桥梁模式的部分)。
**3、封装:**通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。
**4、多态性:**多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。
评论