Java基础强化练习题2(附答案)

更新时间:2024-01-19 08:06:02 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1. 下列代码的输出结果是:

public class Yikes { public static void go(Long n) { System.out.println(\ } public static void go(Short n) { System.out.println(\ } public static void go(int n) { System.out.println(\ } public static void main(String[] args) { short y = 6; long z = 7; go(y); go(z); } } A.

Long Long B.

Short Long C.

int Long D.

int int

正确答案:C

2. 下面不属于接口的是:()。

A. java.sql.Connection B. java.sql.Driver

C. java.sql.DriverManager D. java.sql.ResultSet 正确答案:C

3. synchronized关键字做同步,可以使用在:()。 A. 方法上 B. 接口上 C. 变量上 D. 类上

正确答案:A

4. 类A的定义如下:

class A {

protected void f() throws FileNotFoundException {

……… } }

下列代码段没有编译错误的是:()。 A.

class B extends A {

public void f() throws Exception {

……… } } B.

class B extends A {

public void g() throws IOException {

f(); } } C.

class B extends A {

public void g() {

try{

f(); ……… }

catch(IOException e) {

……… }

catch(FileNotFoundException e1) {

……… } } } D.

class B extends A {

public void g() {

try {

f(); }

catch(FileNotFoundException e) {

throw new RuntimeException(e); } } }

正确答案:D

分析:子类重写父类的方法时候不能声明抛出比父类大的异常

5. 下列选项中能够得到字符串的一部分的单行函数是()。

A. INSERT B. SUBSTR C. LPAD D. LEAST 正确答案:B

6. ResultSet提供了获取数据库中某个字段值的方法,如果某个字段为NUMBER类型,可以获取该字段值的方法是:( )。

A. getNumber() B. getDouble() C. setNumber() D. setDouble() 正确答案:B

7. 下列代码编译和运行的结果是:

public class A { void process() throws Exception { throw new Exception(); } public static void main(String[] args) { A a = new B(); a.process(); } }

class B extends A { void process() { System.out.println(\ } }

A. 输出:B B. 无输出

C. B类的process方法处,出现编译错误 D. 代码a.process();行,出现编译错误 正确答案:D

8. 下列代码编译和运行的结果是:

public static void main(String[] args) {

}

Float pi = new Float(3.14f); if (pi > 3) { System.out.print(\ } else { System.out.print(\ }

finally { System.out.println(\ }

A. 编译失败

B. 输出:pi is bigger than 3.

C. 输出:pi is bigger than 3. Have a nice day D. 输出:pi is not bigger than 3. Have a nice day. 正确答案:A

9. 需要读取一个比较大的文本文件,这个文件里有很多字节的数据,那么下列最合适读这个文件的选项是:()。

A. new FileInputStream(“fileName”);

B. new InputStreamReader(new FileInputStream(“fileName”));

C. new BufferedReader(new InputStreamReader(new FileInputStream(“fileName”))); D. new RandomAccessFile(“fileName”,”+rw”); 正确答案:C

10. 运行下列程序:

public static void main(String[] args) { String str = \ String str1 = \ int index = 0; while ((index = str.indexOf(str1, index)) != -1) { System.out.print(index + \ index += str1.length(); } }

控制台输出的结果是:()。 A. 1 10 21 B. 2 11 22 C. 3 13 23 D. 5 13 22 正确答案:B

11. 运行下列代码,输出为false的是:()。

A. String st1 = \

System.out.println(\

B. String st2 = \

System.out.println(st2.equals(new String(\ C. Integer i = 100;

System.out.println(100 == i); D. ArrayList list = new ArrayList();

System.out.println(list.contains(null)); 正确答案:D

12. 下面关于ResultSet说法错误的是()。

A. 查询结束后,所有的结果数据将一次被存储在ResultSet对象中

B. Statement对象close后,由其创建的ResultSet对象将自动的close

C. 查询结束后,ResultSet中的游标指向第一条记录之上,因此要先调用一次next()才有可能取得记录

D. ResultSet的的方法getString(...)意为取得该列的数据以字符串的形式返回,数据库中的该列类型并不一定必须是字符类型 正确答案:A

13. 下列属于DML语句的是:()。

A. COMMIT B. INSERT C. DROP D. GRANT 正确答案:B

14. 下面关于事务(Transaction)的说法错误的是:()。

A. 事务具备ACID四个基本特性,即A(Atomicity)—原子性、C(Consistency)—一致性、I(Isolation)—隔离性、D(Durability)—持久性。

B. 事务的提交(Commit)指将事务中所有对数据库的更新写到磁盘上的物理数据库中去,事务正常结束。

C. 事务的回滚(Rollback)指在事务运行的过程中发生了某种故障,事务不能继续进行,将事务中对数据库的所有以完成的操作全部撤消,回滚到事务开始的状态。 D. JDBC通过Connection对象控制事务,默认方式下,在执行完更改语句后需要必须要调用Connection的commit方法,对数据的更改才能生效。 正确答案:D

15. 运行下面程序:

public class Foo { public static void main(String[] args) { try { test(); System.out.println(\ } catch (ArrayIndexOutOfBoundsException e) { System.out.println(\ } catch (Exception e) { System.out.println(\

}

} finally { System.out.println(\ } }

public static void test() { String str = \ str.compareTo(\}

输出的结果是:()。 A. condition 1 finally B. condition 2 finally

C. condition 1 condition 3 finally D. condition 1 condition 2 finally 正确答案:A

16. 查询客户姓名以及他的推荐人,没有推荐人的客户信息不显示,下列sql语句正确的是:

A.

select a1.real_name customer, a2.real_name recommenderfrom account a1 join account a2on a1.id = a2.id; B.

select a1.real_name customer, a2.real_name recommenderfrom account a1 join account a2on a1.recommender_id = a2.recommender_id; C.

select a1.real_name customer, a2.real_name recommenderfrom account a1 join account a2on a1.recommender_id = a2.id; D.

select a1.real_name customer, a2.real_name recommenderfrom account a1, a2on a1.recommender_id = a2.id; 正确答案:C

17. 下列代码的运行结果是()。

public class Forest implements Serializable { private Tree tree = new Tree(); public static void main(String[] args) { Forest f = new Forest(); try { FileOutputStream fs = new FileOutputStream(\ ObjectOutputStream os = new ObjectOutputStream(fs); os.writeObject(f); os.close(); } catch (Exception ex) { ex.printStackTrace();

} } }

class Tree { }

A. 编译失败

B. 运行时,抛出异常

C. Forest的实例被序列化到文件

D. Forest的实例和Tree的实例都被序列化到文件 正确答案:B

18. 关于Java 异常,下列说法错误的是()。

A. 异常是定义了程序中遇到的非致命的错误,而不是编译时的语法错误

B. try……catch语句中对try 内语句监测,如果发生异常,则把异常信息放入Exception类的对象中

C. throws 用来表示一个方法有可能抛出异常给上一层,则在调用该方法时必须捕捉异常,否则无法编译通过

D. main方法不可以使用 throws 抛出异常 正确答案:D

19. 现有订单表(orders),包含字段:cid(顾客编号),pid(产品编号)。若查询既订购了产品P01,又订购了产品P02的顾客编号,下列Sql语句正确的是()

A. SELECT DISTINCT(cid) FROM orders o1 WHERE o1.pid IN(‘p01’,’p02’)

B. SELECT DISTINCT(cid) FROM ORDERS o1,orders o2 WHERE o1.pid=’p01’ AND o2.pid=’p02’ AND o1.cid=o2.cid

C. SELECT DISTINCT(cid) FROM orders WHERE pid=’p01’ AND cid IN(select cid FROM orders WHERE pid=’p02’)

D. SELECT DISTINCT(cid) FROM orders o1,orders o2 WHERE o1.pid=’p01’ AND o2.pid=’p02’ 正确答案:C

20. 在JDBC中使用事务,想要回滚事务的方法是 ( )。

A. Connection的commit()

B. Connection的setAutoCommit() C. Connection的rollback() D. Connection的close() 正确答案:C

21. 包含事务控制方法setAutoCommit, commit, rollback的是:() 。

A. Connection B. Statement C. ResultSet

D. DriverManager

正确答案:A

22. 如果查询表a(有3行数据)和表b(有4行数据),使用SELECT * FROM a,b,返回的查询结果的行数是:()。

A. 7 B. 1 C. 0 D. 12 正确答案:D

23. 关于String 和 StringBuffer 下面说法正确的是()。

A. String操作字符串不改变原有字符串的内容 B. StringBuffer连接字符串速度没有String 快 C. String 可以使用append方法连接字符串 D. StringBuffer 在java.util包中 正确答案:A

24. 下列代码的运行结果是()

public class Foo { static void test() throws RuntimeException { try { System.out.print(\ throw new RuntimeException(); } catch (Exception ex) { System.out.print(\ } } public static void main(String[] args) { try { test(); } catch (RuntimeException ex) { System.out.print(\ } System.out.print(\ } }

A. test end B. test

C. test runtime end D. test exception end 正确答案:D

25. 下列不属于Collection接口的方法的是:

A. clear B. contains

C. remove D. listIterator 正确答案:D

26. 现有如下建表SQL语句:

CREATE TABLE departments (

department_id NUMBER(4) PRIMARY KEY, department_name VARCHAR2(20), city VARCHAR2(20), province VARCHAR2(20) ) 下面插入语句正确的是:( )。

A. INSERT INTO departments VALUES(300,’abc’);

B. INSERT INTO departments(department_name,department_id) VALUES(300,’design’); C. INSERT INTO departments(department_name,city) VALUES(‘design’,’bj’); D. INSERT INTO departments VALUES(300,’abc’,null,null); 正确答案:D

27. 下面的描述错误的是:( )。

A. Statement的executeQuery()方法会返回一个结果集

B. Statement的executeUpdate()方法会返回是否更新成功的boolean值

C. 使用ResultSet中的getString()可以获得一个对应于数据库中char类型的值 D. ResultSet中的next()方法会使结果集中的下一行成为当前行 正确答案:B

28. 下列Oracle语句中,属于DDL语句的是()

A. DROP B. INSERT C. DELETE D. SELECT 正确答案:A

29. 有一个表leanr,表里有三个字段分别是学号(student_id),课程(kc),成绩(grade)。查询表中存在课程重复2次以上的记录,显示课程和重复的次数,并且按照重复次数的降序排列,下列SQL语句正确的是:()。

A. SELECT kc,COUNT(kc) FROM leanr ORDER BY COUNT(kc) DESC GROUP BY kc WHERE COUNT(kc)>=2 ;

B. SELECT kc,COUNT(kc) FROM leanr ORDER BY COUNT(kc) DESC GROUP BY kc HAVING COUNT(kc)>=2 ;

C. SELECT kc,COUNT(kc) FROM leanr GROUP BY kc WHERE COUNT(kc)>=2 ORDER BY COUNT(kc) DESC;

D. SELECT kc,COUNT(kc) FROM leanr GROUP BY kc HAVING COUNT(kc)>=2 ORDER BY COUNT(kc) DESC; 正确答案:D

30. 在Oracle中,给Student表添加Address列,如下代码正确的是()。

A. ALTER TABLE student ADD COLUMN(address VARCHAR2(20)) B. UPDATE TABLE student ADD COLUMN(address VARCHAR2(20)) C. UPDATE TABLE student ADD(address VARCHAR2(20)) D. ALTER TABLE student ADD(address VARCHAR2(20)) 正确答案:D

31. 下面关于结果集,说法错误的是:()。

A. 调用Connection对象的preparedStatement(String sql)方法所创建的PreparedStatement对象执行查询所得到的结果集不可以调用previous()方法。

B. Statement在执行完查询后,会把查询得到的所有数据通过网络一次加载到内存中。 C. ResultSet的getDate方法返回的类型是java.sql.Date而不是java.util.Date。 D. ResultSet的初始状态游标位于第一行之上,必须先调用其next方法,才可以获取到数据。 正确答案:B

32. 请看下列代码:

public String makinStrings() { String s = \ s = s + \ s = s.substring(2, 5); s = s.toUpperCase(); return s.toString(); }

调用makinString方法,得到的字符串长度是: A. 1 B. 2 C. 3 D. 4

正确答案:C

33. 下列代码编译和运行的结果是()

public class Foo { public static void main(String[] args) { java.util.List list = new java.util.ArrayList(); list.add(new B()); list.add(new C()); for (A a : list) { a.x(); a.y(); } } }

interface A {

void x(); }

class B implements A { public void x() { } public void y() { } }

class C extends B { public void x() { } }

A. 代码运行没有输出 B. 运行时抛出异常

C. 代码a.y();行,编译错误

D. 代码java.util.List list = new java.util.ArrayList();行,编译错误 正确答案:C

34. 在JDBC连接数据库编程应用开发中,可以实现数据库连接的是()。

A. Connection接口

B. PreparedStatement类 C. CallableStatement类 D. Statement类 正确答案:A

35. 运行下面程序:

public static void main(String[] args) { Map map = new HashMap(); map.put(String.valueOf(System.currentTimeMillis()) + \ map.put(String.valueOf(System.currentTimeMillis()) + \ map.put(String.valueOf(System.currentTimeMillis()) + \ for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getValue()); } }

输出的结果是:()。 A. 123 B. 312 C. 213

D. 123顺序无法确定 正确答案:D

36. 在Java语言中,下列说法正确的是:()。

A. StringBuffer和StringBuilder的区别在于:StringBuffer是线程安全的而StringBuilder不是。 B. String是不可变对象,而StringBuffer中封装的字符串数据是可以动态改变的。

C. 判断两个StringBuilder对象的字符序列是否相同,可以调用其equlas方法进行比较。 D. String的重写了equals方法,重写的逻辑是:字符序列相同的String对象equals方法返回true。

正确答案:ABD

37. 操作account表和age_segment表,查询客户huangrong的年龄段,下列sql语句正确的是:

A. select real_name,birthdate,s.namefrom account a join age_segment son round((sysdate - birthdate)/365) between lowage and hiageand real_name = 'huangrong';

B. select real_name,birthdate,s.namefrom account a left join age_segment son round((sysdate - birthdate)/365) between lowage and hiageand real_name = 'huangrong';

C. select real_name,birthdate,s.namefrom account a left join age_segment son round((sysdate - birthdate)/365) between lowage and hiagewhere real_name = 'huangrong';

D. select real_name,birthdate,s.namefrom account a left join age_segment son round((sysdate - birthdate)/365) between lowage and hiage 正确答案:AC

38. 下面的方法属于StringBuffer的是:()。

A. size B. insert C. delete D. length 正确答案:BCD

39. 下列语句在建表的同时在c2,c3列上创建了唯一约束,其中正确的是:

A.

create table test(

c1 number constraint test_c1_pk primary key,

c2 number constraint test_c2_uk foreign key,

c3 number constraint test_c3_ukforeign key);

B.

create table test(

c1 number constraint test_c1_pk primary key,

c2 number , c3 number , constraint test_c3_uk foreign key(c2,c3)); C.

create table test(

c1 number constraint test_c1_pk primary key,

c2 number , c3 number , constraint test_c3_uk unique(c2,c3)); D.

create table test(

c1 number constraint test_c1_pk primary key, c2 number constraint test_c2_uk unique, c3 number constraint test_c3_uk unique); 正确答案:CD

40. 请看下列代码:

public class Key { private long id1; private long 1d2; // class Key methods }

程序员开发Key类,作为java.util.HashMap的key,那么Key应该覆盖的两个方法是: A. public int hashCode()

B. public boolean equals(Key k) C. public int compareTo(Object o) D. public boolean equals(Object o) 正确答案:AD

41. IO类实现了打开并读取一个文本文件,每次读取一行内容。将每行作为一个String字符串放入String数组里面返回。阅读代码并完成以下5题:

public class IO { public String[] read(InputStream in) throws IOException { String[] arr = new String[1]; String[] temp = null;

空白处1

String line =\ while ((空白处2) != null) { arr[arr.length - 1] = line; 空白处3 for (int i = 0; i < arr.length; i++) { temp[i] = arr[i]; } 空白处4 for (int i = 0; i < arr.length; i++) { arr[i] = temp[i]; }

}

arr = new String[temp.length - 1];

}

for (int i = 0; i < arr.length; i++) { arr[i] = temp[i]; } br.close(); return arr; }

public static void main(String[] args) throws IOException { String[] arr = new IO().read(new FileInputStream(\ System.out.println(arr); }

空白处5

System.out.println(str);

(1). 下列选项中,能填入空白处1的代码是( )

A. BufferedReader br = new BufferedReader(new InputStreamReader(in)); B. BufferedReader br = new BufferedReader(new FileReader(in)); C. FileReader br=new FileReader(in);

D. InputStreamReader br=new InputStreamReader(in); 正确答案:A

(2). 下列选项中,能填入空白处2的代码是( ) A. line = br.read(); B. line = br.readLine(); C. line = br.readString(); D. line = br.readUTF();

正确答案:B

(3). 下列选项中,能填入空白3的代码是( ) A. temp = new String[arr.length + 1]; B. temp = new String[arr.length]; C. temp = new String[arr.length-1]; D. temp = new String[arr.length/2];

正确答案:A

(4). 下列选项中,能填入空白处4的代码是( ) A. arr = new String[temp.length/2]; B. arr = new String[temp.length-1]; C. arr = new String[temp.length+1]; D. arr = new String[temp.length]; 正确答案:D

(5). 下列选项中,能填入空白处5的代码是( ) A. for (arr: String str) { B. for (arr[]:String str){ C. for (String str : arr) { D. for (String str : arr[]) { 正确答案:C

42. ScoreManager类实现了成绩管理系统。该系统有如下功能供选则:录入成绩,成绩列表,查询成绩,退出。当用户在控制台输入1,用户选择的功能为录入成绩;输入2,用户选择的功能为成绩列表;输入3,用户选择的功能为根据姓名查找成绩;输入4,退出。 ScoreManager类代码如下:

public class ScoreManager { public static void main(String[] args) { int numOfStudents = 10; //学生名字信息数组 String[] students = NameUtils.randomNames(numOfStudents); int[] scores = new int[numOfStudents];//学生成绩数组 //使用Scanner接收控制台的输入信息 空白处1 System.out.println(\欢迎进入成绩管理系统**********\ while (true) { System.out.println(\请选择功能:1——成绩录入,2——成绩列表,3——成绩查询,4——退出\ String c = scanner.next().trim(); if (\ System.out.println(\开始录入成绩: \ for (int i = 0; i < students.length; i++) { System.out.print((i + 1) + \学生姓名:\成绩:?\ //从控制台接收到学生成绩 空白处2 } System.out.println(\录入完毕。\ } else if (\ int avg = 0; for (int i = 0; i < scores.length; i++) { avg += scores[i]; } //计算学生的平均成绩 空白处3 System.out.println(StringUtils.rightPad(\编号\姓名\ + StringUtils.rightPad(\成绩\ System.out.println(StringUtils.repeat(\ for (int i = 0; i < students.length; i++) { System.out.println(StringUtils.rightPad(i + 1 + \10, \\StringUtils.rightPad(students[i], 10, \ } System.out.println(StringUtils.repeat(\

System.out.println(\平均成绩: \ }

else if (\ System.out.print(\请输入您要查询的学生姓名: \ String student = scanner.next().trim(); int i = 0; for (; i < students.length; i++) { //如果查找到某个学生的信息,退出当前循环 空白处4 }

if ( 空白处5 ) {

System.out.println((i + 1) + \学生姓名:\成绩:\scores[i]); } else { System.out.println(\对不起,找不到学员的信息。\ } } else if (\ System.out.println(\谢谢使用**********\ break; } } scanner.close(); } }

(1). 下列选项中,能填入空白处1的代码是( ) A. Scanner scanner = new Scanner(System.out); B. Scanner scanner = new Scanner(System.in);

C. Scanner scanner = new Scanner(new FileInputStream(System.in)); D. Scanner scanner = new Scanner(new FileOutputStream(System.out)); 正确答案:B

(2). 下列选项中,能填入空白处2的代码是( ) A. scores[i] = scanner.nextInt(); B. scores[i] = scanner.next();

C. scores[i] = scanner.nextDouble(); D. scores[i] = scanner.nextString(); 正确答案:A

(3). 下列选项中,能填入空白处3的代码是( ) A. avg *= scores.length; B. avg /= scores.length; C. avg *= scores.length-1; D. avg /= scores.length-1;

正确答案:B

(4). 下列选项中,能填入空白处4的代码是( )

A. if (student.equalsIgnoreCase(students[i-1])) { break; } B. if (student.equalsIgnoreCase(students[i])) { continue; } C. if (student.equalsIgnoreCase(students[i-1])) { continue; } D. if (student.equalsIgnoreCase(students[i])) { break; } 正确答案:D

(5). 下列选项中,能填入空白处5的代码是( ) A. scores.length < scores.length-1 B. scores.length < scores.length C. i < students.length D. i < students.length-1 正确答案:C

本文来源:https://www.bwwdw.com/article/fcoo.html

Top