admin 管理员组

文章数量: 887021


2024年2月18日发(作者:数组转字符串单引号)

( 2019 ---- 2020 学年第 学期)

课程名称: Java程序设计 适用专业(班级):

考试时间:90分钟 考试形式:上机考试 满分:100分

一、选择题(每题3分,共45分)

1、Java是从( )语言改进重新设计。

A、Python

B、C++

C、Pasacal

D、BASIC

2、下列那个标识符的定义是不正确的( )。

A、Class

B、_123Name

C、eye-num

D、$100

3、下列语句哪一个正确( )。

A.Java程序经编译后会产生machine code

B.Java程序经编译后会产生byte code

C.Java程序经编译后会产生DLL

D.以上都不正确

4、下列说法正确的有( )。

A. class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名

C. constructor在一个对象被new时执行

D.一个class只能定义一个constructor

5、提供Java存取数据库能力的包是( )。

A.

B.

C.

D.

6、下列运算符合法的是( )。

A.&&

B.<>

C.if

D.:=

7、执行如下程序代码:

int a=0;

int c=0;

do{

第 1 页,共 9 页

--c;

a=a-1;

}while(a>0);

后,c的值是( )

A.0

B.1

C.-1

D.死循环

8、下列哪一种叙述是正确的( )。

A. abstract修饰符可修饰属性、方法和类

B.抽象方法的body部分必须用一对大括号{ }包住

C.声明抽象方法,大括号可有可无

D.声明抽象方法不可写出大括号

9、下列语句正确的是( )。

A.形式参数可被视为local variable

B.形式参数可被字段修饰符修饰

C.形式参数为方法被调用时,真正被传递的参数

D.形式参数不可以是对象

10、下列哪种说法是正确的( )。

A.实例方法可直接调用超类的实例方法

B.实例方法可直接调用超类的类方法

C.实例方法可直接调用其他类的实例方法

D.实例方法可直接调用本类的类方法

11、下列说法正确的是( )。

A.数组是一种对象

B.数组属于一种原生类

C.int number=[]={31,23,33,43,35,63}

D.数组的大小可以任意改变

12、可以用来修饰interface的有( )。

A.private

B.public

C.protected

D.static

13、下列说法正确的有( )。

A.Java面向对象语言容许单独的过程与函数存在

B.Java面向对象语言容许单独的方法存在

C.Java语言中的方法属于类中的成员(member)

D.Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同

14、设有定义语句int a[]={1,2,3},则以下对此语句的叙述中错误的是()。

A.定义了一个名为a的一维数组

第 2 页,共 9 页

B.a数组有三个元素

C.a数组的下标为1,2,3

D.数组a中的每个元素是整型

15、字符串”’a’”的长度是( )。

A、3

B、4

C、5

D、6

二、填空题(每空1分,共15分)

公司将java细分为三个版本,三个版本简称为:____________、____________、____________。

2.字符串分两大类,一类是字符串常量,使用____________类的对象表示;另一类是字符串变量,使用____________类的对象表示。

3.数组x定义如下:String x[][]=new String[3][2];x[0][0]=”abc”,x[0][1]=”12345”;。则的值为_______,x[0][1].length的值为__________。

中类成员的限定词有以下几种:____________、____________、____________和____________,其中____________的限定范围最大。

_语言中的Math类包含以下常用的方法:求绝对值的方法名为____________、求平方根的方法名为____________,求x的y次方的方法名为____________。

三、简答题(每题5分,共10分)

1.简述面向对象编程的3个原则。

2.

什么是线程?它和进程有什么区别?。

第 3 页,共 9 页

四、编程题(每题10分,共30分)

题1、求1+2!+3!+...+20!的和。

public class Question1 {

public static void main(String[] args) {

int sum = 0;//总和

(省略)

n("" + sum);

}

//求阶乘的实现

private static int factorial(int i) {

//求阶乘

(省略)

return mult;//返回阶乘结果

}

}

题2、已知整型数组 int[] arr={4,2,5,3,1},请将数组中的数字按从小到大进行排列(排序方法不限)。

public class Question2 {

public static void main(String[] args) {

int[] arr = { 4, 2, 5, 3, 1 };

for (int i = 0; i < ; i++) {

int tem = i;

// 将数组中从i开始的最小的元素所在位置的索引赋值给tem

for (int j = i; j < ; j++) {

if (arr[j] < arr[tem]) {

tem = j;

}

}

// 上面获取了数组中从i开始的最小值的位置索引为tem,利用该索引将第i位上的元素与其进行交换

(省略)

}

}

}

题3、编写Java程序测试JDBC是否已连接MySQL数据库(数据库主机名为localhost,访问账号为root,密码为123456,数据库名为test)。

import tion;

import Manager;

public class Question3 {

public static void main(String[] args) {

Connection conn=null;

第 4 页,共 9 页

}

}

String hostName="localhost";

String dbName="test";

String userName="root";

String password="123456";

(省略)

第 5 页,共 9 页

参考答案

一、选择题(每题3分,共45分)

1、B 2、C 3、B 4、C 5、A 6、A 7、C 8、D

9、A 10、D 11、A 12、B 13、D 14、C 15、A

二、填空题(每空1分,共15分)

1、J2EE、J2SE、J2ME

2、String、StringBuffer

3、3、5

4、public、缺省(或friendly)、private、protected、private

5、abs、sqrt、pow

三、简答题(每题5分,共10分)

1、简述面向对象编程的3个原则。

答:所有面向对象的编程语言都提供帮助你实现面向对象模型的机制,这些机制是封装,继承及多态性。

(1)封装

封装(Encapsulation)是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。

(2)继承

继承(Inheritance)是一个对象获得另一个对象的属性的过程。

继承性与封装性相互作用。如果一个给定的类封装了一些属性,那么它的任何子类将具有同样的属性,而且还添加了子类自己特有的属性。这是面向对象的程序在复杂性上呈线性而非几何性增长的一个关键概念。 新的子类继承它的所有祖先的所有属性。它不与系统中其余的多数代码产生无法预料的相互作用。

(3)多态性

多态性是允许一个接口被多个同类动作使用的特性,具体使用哪个动作与应用场合有关。多态性的概念经常被说成是“一个接口,多种方法”。这意味着可以为一组相关的动作设计一个通用的接口。多态性允许一个接口被同类的多个动作使用,这样就降低了程序的复杂性。选择应第 6 页,共 9 页

用于每一种情形的特定的动作(specific action)(即方法)是编译器的任务,程序员无需手工选择。只需记住并使用通用接口即可。

2、什么是线程?它和进程有什么区别?。

答:一个线程是给定的指令的序列(你所编写的代码)、一个栈(在给定的方法中定义的变量),以及一些共享数据(类一级的变量)。线程也可以从全局类中访问静态数据。

每个线程都有其自己的堆栈和程序计数器(PC)。用户可以把程序计数器(PC)设想为用于跟踪线程正在执行的指令,而堆栈用于跟踪线程的上下文(上下文是当线程执行到某处时,当前的局部变量的值)。虽然用户可以编写出在线程之间传送数据的子程序,但在正常情况下,一个线程不能访问另外一个线程的栈变量。

线程和进程之间区别:

(1)最基本的区别就是每个进程都拥有一组完整的属于自己的变量,而线程则共享这些数据。

(2)线程不如进程安全,但线程的优势在于创建和注销线程的开销比运行新的进程少得多,正因如此,线程被称为轻负荷进程(light-weight process)。一个进程中可以包含多个线程。

(3)和进程间的通信相比,线程间的通信要快得多,也方便得多。

(4)多进程:在操作系统中能同时运行多个任务(程序)。

(5)多线程:在同一应用程序中有多个顺序流同时执行。

(6)线程可以理解为比进程更小的的程序单元。都具有并发执行多任务的能力,线程包含在进程内。

四、编程题(每题10分,共30分)

题1、求1+2!+3!+...+20!的和。

public class Question1 {

public static void main(String[] args) {

int sum = 0;//总和

for (int i = 1; i <= 20; i++) {

sum += factorial(i);//累加

}

n("" + sum);

}

//求阶乘的实现

private static int factorial(int i) {

//求阶乘

int mult = 1;

第 7 页,共 9 页

for (int j = 1; j <= i; j++) {

mult *= j;

}

return mult;//返回阶乘结果

}

}

题2、已知整型数组 int[] arr={4,2,5,3,1},请将数组中的数字按从小到大进行排列(排序方法不限)。

public class Question2 {

public static void main(String[] args) {

int[] arr = { 4, 2, 5, 3, 1 };

for (int i = 0; i < ; i++) {

int tem = i;

// 将数组中从i开始的最小的元素所在位置的索引赋值给tem

for (int j = i; j < ; j++) {

if (arr[j] < arr[tem]) {

tem = j;

}

}

// 上面获取了数组中从i开始的最小值的位置索引为tem,利用该索引将第i位上的元素与其进行交换

int temp1 = arr[i];

arr[i] = arr[tem];

arr[tem] = temp1;

}

}

}

题3、编写Java程序测试JDBC是否已连接MySQL数据库(数据库主机名为localhost,访问账号为root,密码为123456,数据库名为test)。

import tion;

import Manager;

public class Question3 {

public static void main(String[] args) {

Connection conn=null;

String hostName="localhost";

String dbName="test";

String userName="root";

String password="123456";

try {

第 8 页,共 9 页

e("");

conn=nection("jdbc:mysql://"+hostName+":3306/"+dbName+"?useUnicode=true&characterEncoding=utf8", userName, password);

("连接成功!");

} catch (Exception e) {

tackTrace();

}

}

}

第 9 页,共 9 页


本文标签: 方法 线程 程序 数组