2021年10月13日 java1

考点1:变量初始化话

下列程序test 类中的变量c 的最后结果为

1
2
3
4
5
6
7
8
9
10
11
public class Test {
public static void main(String args[]) {
int a = 10;
int b;
int c;
if (a > 50) {
b = 9;
}
c = b + a;
}
}
  • A 10
  • B 0
  • C 19
  • D 编译出错
显示答案/隐藏答案正确答案: D

方法中定义的变量一定要初始化,类中定义的变量可不用初始化,会有默认值
报错如下:

1
The local variable b may not have been initialized

考点2:快速排序

下面程序的输出结果是什么。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class A2{ 
public static void main(String[] args){
int[] a={2,4,6,8,3,6,9,12};
doSomething(a,0,a.length-1);
for(int i=0;i<=a.length-1;i++)
System.out.print(a[i]+" ");
}
private static void doSomething(int[] a,int start,int end){
if(start<end){
int p=core(a,start,end);
doSomething(a,start,p-1);
doSomething(a,p+1,end);
}
}
private static int core(int[] a,int start,int end)
{
int x=a[end];
int i=start;
for(int j=start;j<=end-1;j++){
if(a[j]>=x){
swap(a,i,j);
i++;
}
}
swap(a,i,end);
return i;
}

private static void swap(int[] a,int i,int j)
{
int tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
  • A 找到最大值
  • B 找到最小值
  • C 从大到小的排序
  • D 从小到大的排序
显示答案/隐藏答案正确答案: C

考点3:maven和ant

下面有关maven和ant的描述,描述错误的是?

  • A Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码
  • B Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里
  • C maven和ant都有“生命周期”的概念,当你输入一个命令后,maven或者ant会执行一系列的有序的步骤,直到到达你指定的生命周期
  • D Ant构建文件默认命名为build.xml,Maven默认构建文件为pom.xml
显示答案/隐藏答案正确答案: C

Ant的作用:是一种基于Java的build工具

  1. 能够用ant编译java类。生成class文件
  2. ant能够自己定义标签、配置文件,用于构建。
  3. ant能够把相关层构建成jar包 。
  4. ant把整个项目生成web包。并公布到Tomcat

Ant的长处:

  1. 跨平台性:Ant是纯Java语言编写的,因此具有非常好的跨平台性。
  2. 操作简单:Ant是由一个内置任务和可选任务组成的。Ant执行时须要一个XML文件(构建文件)。
  3. Ant通过调用target树,就能够运行各种task:每一个task实现了特定接口对象。因为Ant构建文件时XML格式的文件。所以非常easy维护和书写,并且结构非常清晰。
  4. Ant能够集成到开发环境中:因为Ant的跨平台性和操作简单的特点。它非常easy集成到一些开发环境中去。

Maven的作用: 除了以程序构建能力为特色之外,还提供高级项目管理工具。

Maven除了具备Ant的功能外。还添加了下面基本的功能:

  1. 使用Project Object Model来对软件项目管理。
  2. 内置了很多其它的隐式规则,使得构建文件更加简单。
  3. 内置依赖管理和Repository来实现依赖的管理和统一存储;
  4. 内置了软件构建的生命周期;

Maven的长处:

  1. 拥有约定,知道你的代码在哪里,放到哪里去
  2. 拥有一个生命周期,比如运行 mvn install就能够自己主动运行编译,測试。打包等构建过程
  3. 仅仅须要定义一个pom.xml,然后把源代码放到默认的文件夹,Maven帮你处理其它事情
  4. 拥有依赖管理。仓库管理

总体的比較:

  • Ant将提供了非常多能够重用的task,比如copy, move, delete以及junit单元测试
  • Maven则提供了非常多能够重用的过程。

考点4:java8中使用开放地址法的类

java8中,下面哪个类用到了解决哈希冲突的开放定址法

  • A LinkedHashSet
  • B HashMap
  • C ThreadLocal
  • D TreeMap
显示答案/隐藏答案正确答案: C

HashMap采用了链地址法,ThreadLocalMap则是开放地址法

  • 开放定址法:当冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。沿此序列逐个单元地查找,直到找到给定
    的关键字,或者碰到一个开放的地址(即该地址单元为空)为止(若要插入,在探查到开放的地址,则可将待插入的新结点存人该地址单元)。查找时探查到开放的 地址则表明表中无待查的关键字,即查找失败。
  • 链地址法:将所有关键字为同义词的结点链接在同一个单链表中。若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数 组T[0..m-1]。凡是散列地址为i的结点,均插入到以T[i]为头指针的单链表中。T中各分量的初值均应为空指针。

考点5:

下列关于while循环、do-while循环和for循环说法错误的是

  • A while循环先执行条件判断,do-while循环执行循环体
  • B do-while循环结束的条件是关键字while后的条件表达式成立
  • C for循环结构中的3个表达式缺一不可
  • D while循环能够实现的操作,for循环也能实现
显示答案/隐藏答案正确答案: BC

考点6:

以下类型为Final类型的为()

  • A HashMap
  • B StringBuffer
  • C String
  • D Hashtable
显示答案/隐藏答案正确答案: BC

Class HashMap<K,​V>
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/HashMap.html

1
2
3
public class HashMap<K,​V>
extends AbstractMap<K,​V>
implements Map<K,​V>, Cloneable, Serializable

Direct Known Subclasses:
LinkedHashMap, PrinterStateReasons

Class Hashtable<K,​V>
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Hashtable.html
All Implemented Interfaces:
Serializable, Cloneable, Map<K,​V>
Direct Known Subclasses:
Properties, UIDefaults

1
2
3
public class Hashtable<K,​V>
extends Dictionary<K,​V>
implements Map<K,​V>, Cloneable, Serializable

String StringBuffer StringBuilder都是final类

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html

1
2
3
public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuffer.html

1
2
3
public final class StringBuffer
extends Object
implements Serializable, Comparable<StringBuffer>, CharSequence

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuilder.html

1
2
3
public final class StringBuilder
extends Object
implements Serializable, Comparable<StringBuilder>, CharSequence

通过阅读源码可以知道,string与stringbuffer都是通过字符数组实现的。
其中string的字符数组是final修饰的,所以字符数组不可以修改。
stringbuffer的字符数组没有final修饰,所以字符数组可以修改。
string与stringbuffer都是final修饰,只是限制他们所存储的引用地址不可修改。
至于地址所指内容能不能修改,则需要看字符数组可不可以修改。

1
2
3
4
5
6
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char value[];
......
}
1
2
3
4
public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
{......}
1
2
3
4
 public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
{......}
1
2
3
4
5
6
7
abstract class AbstractStringBuilder implements Appendable, CharSequence {
/**
* The value is used for character storage.
*/
char[] value;
......
}

考点7:

在使用super和this关键字时,以下描述错误的是()

  • A 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
  • B super()和this()不一定要放在构造方法内第一行
  • C this()和super()可以同时出现在一个构造函数中
  • D this()和super()可以在static环境中使用,包括static方法和static语句块
显示答案/隐藏答案正确答案: BCD