JavaSE 阶段性测试,javase阶段性测试
分享于 点击 36733 次 点评:52
JavaSE 阶段性测试,javase阶段性测试
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);
拆箱呢?顾名思义,跟装箱对应,就是自动将包装器类型转换为基本数据类型:
相关文章
- 暂无相关文章
用户点评