JavaSE 阶段性测试

版权声明:最短的时间最核心的知识,有疑问,欢迎进行留言。 https://blog.csdn.net/lizhidefengzi/article/details/79356909

1.简述String类、StringBuilder类以及StringBuffer类之间的主要区别。

  • String类描述的字符串是常量不可更改,若程序中出现大量差别不大的字符串内容时,若每个字符串单独保存一份对内存的消耗是比较大的,为了节省内存空间可以使用StringBuilder类和StringBuffer类描述字符串。这两个类描述的字符序列是可以改变的。
  • StringBuider不支持线程同步,效率比较高,推荐使用
  • StringBuffer 支持线程同步,效率比较低

2.编程实现Student类的封装并重写equals()、hashCode()以及toString()方法,属性有:学号和姓名。

package xdl.day20;

public class Student {
    private int id;
    private String name;

    @Override
    public int hashCode(){
        final int prime=31;
        int result=1;
        result=prime*result+id;
        result=prime*result+((name==null)?0:name.hashCode());

        return result;

    }

    @Override
    public boolean equals(Object obj) {
        if(this==obj)
            return true;
        if(obj==null)
            return false;
        if(getClass()!=obj.getClass())
            return false;
        Student other=(Student)obj;
        if(id!=other.id)
            return false;
        if(name==null){
            if(other.name!=null)
                return false;
        }else if(!name.equals(other.name))
            return false;

        return true;
    }

    @Override
    public String toString() {
        return "Student [id="+id+",name="+name+"]";
    } 


}

3.简述List接口的特性和主要实现类的底层实现。

  • java.util.List接口是Collection接口的子接口,该接口的元素有放入次序,允许重复。该接口的主要实现类有:ArrayList类、LinkedList类、Stack类、Vector类
  • 其中ArrayList类的底层实现是采用动态数组实现的,增删元素不方便,访问元素不方便
  • 其中LinkedList类的底层实现是采用链表实现的,增删元素方便访问元素不方便。
  • 其中Stack类(栈)底层采用动态数组实现的,该类是一种具有后进先出特性的数据结构
  • 其中Vector类底层是采用动态数组方式来实现的,其与ArrayList类相比,是属于线程安全的类,因此效率比较低,推进使用ArrayList类

4.简述Java中的泛型机制由来与本质

  • 由来:目前集合中虽然可以存放不同类型的数据,但集合中都是看做Object类型对的数据去存放的,当需要从集合中取出数据并表达原始数据类型时,可能需要进行强制类型转换,此时可能引发类型转换异常,为了避免该类错误的发生,从jdk1.5开始支持泛型机制
  • 本质:类型参数化,也就是将数据类型作为实参传递给形参E,在类体中所有E 就变成了实参的数据类型。

5.简述异常捕获的语法格式以及是否发生异常的执行流程

语法格式:
try{
    可能产生异常对象的语句块
}
catch( 异常类型 引用名){
    针对当前类型对象对的处理语句块
}
... ...
finally{
    无论是否发生异常都应该执行的语句块
}
执行流程:
try{
    a;
    b;
    c;
}catch(Exception ex){
    e;
}
finally{
    f;
}
当没有发生异常时,程序的执行流程是:abcf
当发生异常时,程序执行流程是:abef

6.编程实现将字符串”Good Good Study, Day Day Up!”中所有Day的查找并打印出来。

int indexOf(String str, int fromIndex) - 用于从fromIndex位置开始查找str。

package xdl.day20;

public class TestString {

    public static void main(String[] args) {

        String s=new String("Good Good Study, Day Day Up!");
        int fromIndex=0;
        while((fromIndex=s.indexOf("Day",fromIndex+1))>0){
            System.out.println("Day");  
        }
    }

}

7.简述装箱和拆箱的概念和新特性

Java为每种基本数据类型都提供了对应的包装器类型,如果要生成一个数值为10的Integer对象,必须这样进行:
Integer i = new Integer(10);
拆箱呢?顾名思义,跟装箱对应,就是自动将包装器类型转换为基本数据类型:

猜你喜欢

转载自blog.csdn.net/lizhidefengzi/article/details/79356909