Java面试题系列三

“提问式”学习方法是一种有效的学习方法,尤其是一些经典的提问。通过思考和解决这些问题,不仅可以学习到知识,更是可以培养自我思考的习惯。

现在就让我们来思考和回答下列Java面试题目,我把其归之为Java面试题系列三。

1.数组有没有length() 这个方法?String类有没有length()这个方法?

答:数组没有length()这个方法,但是它有length这个属性。而String类有length()这个方法。数组使用length属性可以知道数组的长度,String类使用length()方法可以知道字符串的长度。测试代码如下:

public class MianShi1 
{
  public static void main(String[] args) 
  {
    int[] arr = {1,2,3,4};
    String str = "Hello";
    int arrLen = arr.length;
    int strLen = str.length();

    System.out.println("数组的长度是:" + arrLen);
    System.out.println("字符串的长度是:" + strLen);
  }
}

运行结果如下:

数组的长度是:4

字符串的长度是:5

2.abstact class 和 interface有什么区别?

答:含有abstract修饰符的class即为抽象类,abstract类不能创建对象。含有abstact方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract

class类中定义抽象方法必须在具体的子类中实现,所以,不能有抽象的构造方法和抽象的静态方法。如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。

接口(interface)可以说成是抽象类的一种特例,接口中所有的方法都必须是抽象的。接口中定义方法默认为public abstract类型,接口中的成员变量类型默认为public static

final。

语法区别:

1).抽象类可以有构造方法,但不是抽象的,接口中不能有构造方法。
2).抽象类中可以有普通成员变量,接口中没有普通成员变量
3).抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4). 抽象类中的抽象方法的访问类型可以是public,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5). 抽象类中可以包含静态方法,接口中不能包含静态方法
6). 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7). 一个类可以实现多个接口,但只能继承一个抽象类。

应用区别:

抽象类在代码实现方面发挥作用,可以实现代码的重用;接口更多是在系统架构设计上发挥作用,主要用于定义模块之间的通信契约。

3.Overload和Override的区别?

答:Overload是重载的意思,Override是覆盖的意思,也就是重写。

Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。

4.请说出作用域public,private,protected,以及不写时的区别
答:这四个作用域的可见范围如下表所示。
作用域 当前类 同一package子孙类 其他package
public √ √√ √
protected √ √√×
friendly√ √××
private √×××

说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly。

5.请说出ArrayList,Vector和LinkList的存储性能和特性?

答:ArrayList和Vector都是采用数组结构存储数据,此数组的长度大于实际存储数据的个数以便于进行增加或插入元素。它们都可以按序号索引元素,但是插入或删除操作要涉及数据元素移动,因而,它们索引效率高,而插入或删除操作效率较低。Vector使用synchronized方法,线程安全,通常性能较ArrayList差。LinkList采用链式结构存储数据,遍历较慢但插入或删除操作较快。

6.Collection和Collections的区别?

答:Collection是集合类的上级接口,继承于它的接口有Set和List接口。Collections是集合类的一个辅助类,提供一系列静态方法实现对各种集合的搜索、排序和线程安全化等操作。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值