*第二次考试总结
1.下列代码,前者与后者是重载关系的是:(a)
A. public void show(){}和public void show(int num){}
B. public void show(){}和public void print(int num){}
C. public void show(){}和public int show(){}
D. public void show(int a){}和 public void show1(int b){}
关于分析
重载的概念是:
方法名称相同,参数个数、次序、类型不同。因此重载对返回值没有要求,可以相同,也可以不同,但是如果参数的个数、类型、次序都相同,方法名也相同,仅返回值不同,则无法构成重载。
5.下列关于异常处理的描述中,错误的是 (d)
A.程序运行时异常由 Java 虚拟机自动进行处理
B.使用 try-catch-finally 语句捕获异常
C.使用 throw 语句抛出异常
D.捕获到的异常只能在当前方法中处理,不能在其他方法中处理
关于分析
比如在main方法调用method1方法,而method1方法又调用method2方法。当method2方法抛出异常时,它会被method1方法的try-catch块捕获并处理。
1.构造方法和成员方法的区别?
A. 格式区别 构造方法名和类名相同,并且没有返回值,也没有返回值类型,连void都没有 普通成员方法可以任意起名,必须有返回值类型,可以没有返回值
B. 作用区别 构造方法用于创建对象,并进行初始化值 普通成员方法是用于完成特定的功能
C. 调用区别 构造方法是在创建对象时被调用的,一个对象的建立,只调用一次相应的构造函数 普通成员方法是创建好的对象调用,一调用多次.
2.== 和equals比较时的区别?
== 既可以比较 基本数据类型,又可以比较引用类型。
当== 两边操作数是基本数据类型时,比较的是值本身。当 == 两边是引用类型时比较的是引用地址值
equals() 只能比较引用类型。Object中的equals()的作用和 == 作用相同,比较的都是引用类型的地址值,若想比较对象的内容,对象所在的类必须重写equals()方法
3.String,StringBuilder,StringBuffer的相同点和不同点?
相同点:三者都可以操作字符串。
String 是不可变字符串对象,每次修改字符串都会创建新对象
StringBuilder、StringBuffer 是可变字符串序列(对象),StringBuilder 和 StringBuffer 在修改字符串时不会创建新对象
当需要对字符串频繁的修改时,推荐使用StringBuilder 或 StringBuffer
StringBuffer是jkd 1.0 提供的。StringBuilder是jdk 1.5提供的,二者的常用方法名 和实现原理是一样的。
不同点:
区别在于StringBuffer是线程安全的,StringBuilder是线程不安全的。如果不涉及线程安全问题,推荐使用StringBuilder,因为它的效率会更高一些
4.Java中的泛型是什么?使用泛型的好处是什么?
Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许我们在编译时检测到非法的类型数据结构;
泛型的本质就是参数化类型,也就是所操作的数据类型被指定为一个参数;
泛型的好处
- 类型安全。泛型的主要目的就是提高Java程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设只能我们自己记或者代码注释;
2.消除强制类型转换。泛型一个附带好处是,消除代码中许多强制类型的转换。减少代码出错率,更好阅读;
3.潜在的性能收益。可以带来更好的优化可能。在泛型的初始实现中,编译器强制类型转换(没有泛型的话,程序员会指定这些强制类型转换,)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为以后的JVM可以带来更好的优化。由于泛型的实现方式,支持泛型几乎不需要JVM或类文件更改,所有工作都在编译器中完成,编译器生成的类没有泛型(和强制类型转换),只是来确保数据类型安全;
2、两数之和(输入一个整数数组nums和一个目标值target),请你在该数组中找出和为目标值target的那两个整数,并输出他们的数组下标。你可以假设每种输入有且仅有一对答案。但是,数组中的同一个元素在答案里不能重复出现。)
解释:从给定的数组中选出两个数(必须是两个不同的数),他们俩的和为目标值target,然后输出他们的下标值。对于每一个数组和目标值(即一对数据),他们的答案是唯一的(即在一个数组内不会同时有两对元素的和等于目标值)。
输入格式:
第一行输入一个整数 n 代表数组长度。
第二行输入 n 个整数,用空格隔开,代表数组元素。
第三行输入一个整数target,代表目标值。
输出格式:
共一行,两个数, 分别代表两数的数组下标。
提示:Map集合
public class Test2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[]arr=new int[n];
for (int i = 0; i <n ; i++) {
arr[i]=sc.nextInt();
}
int target=sc.nextInt();
twosum(arr,target);
}
public static void twosum(int[] nums,int target){
int length=nums.length;
for (int i = 0; i <nums.length-1 ; i++) {
for (int j = i+1; j <length ; j++) {
if (nums[i]+nums[j]==target){
System.out.println(i+" "+j);
return;
}
}
}
}
}