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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值