习题合集

习题一
1.Which is the return type of the method main()?
正确答案: B

A int

B void

C Boolean

D static
解析:主方法是无返回值类型的,所以要用void修饰。
public static void main(String[] args){}

2.下列选项中关于Java中super关键字的说法正确的是()

正确答案: A

A super关键字是在子类对象内部指代其父类对象的引用

B super关键字不仅可以指代子类的直接父类,还可以直接指代父类的父类

C 子类通过super关键字只能调用父类的方法,而不能调用父类的属性

D 子类通过super关键字只能调用父类的属性,而不能调用父类的方法

解析:super是java提供的一个关键字,super用于限定该对象调用它从父类继承得到的Field或方法。super关键字不能出现在static修饰的方法中,因为static修饰的方法是属于类的。如果在构造器中使用super,则super用于限定该构造器初始化的是该对象从父类继承得到的field,而不是该类自己定义的field。需要注意的是,super关键字只能指代直接父类,不能指代父类的父类。

3.下面有关java实例变量,局部变量,类变量和final变量的说法,错误的是?
正确答案: B

A 实例变量指的是类中定义的变量,即成员变量,如果没有初始化,会有默认值。

B 局部变量指的是在方法中定义的变量,如果没有初始化,会有默认值

C 类变量指的是用static修饰的属性

D final变量指的是用final 修饰的变量

解析: 定义在类中的变量是类的成员变量,可以不进行初始化,Java会自动进行初始化,如果是引用类型默认初始化为null,如果是基本类型例如int则会默认初始化为0
局部变量是定义在方法中的变量,必须要进行初始化,否则不同通过编译
被static关键字修饰的变量是静态的,静态变量随着类的加载而加载,所以也被称为类变量被final修饰发变量是常量

4.下面有关java的instanceof、?、&、&&说法正确的有?

正确答案: A B C D

A instanceof 可用来判断某个实例变量是否属于某种类的类型。

B “?:” 三目运算符

C &在逻辑运算中是非短路逻辑与,在位运算中是按位与

D && 逻辑运算:逻辑与

解析:

instanceof :用来判断某个实例变量是否属于某种类的类型,但是实例变量可以放置在前面也可以放置在后面

"?:": 三目运算符

&:  逻辑与

&&: 逻辑运算:

&&是逻辑与 即判断&&两侧的表达式是否都为真,都为真则此&&表达式值为真;& 是按位与 即将&两侧的数用二进制展开,每一位都求与运算,最后得到的二进制数即为结果;逻辑与结果只讲真和假,而按位与得出的却是实实在在的一个数 

5.基本数据类型均可任意互相转换。
正确答案: B

A 对

B 错

解析: 原生类是指Java中,数据类型分为基本数据类型(或叫做原生类、内置类型)和引用数据类型。
那么原生类为基本数据类型,有八种,这样转换的时候就有表达范围问题。
1、所占位数少的可以转换为所占位数多的类型,比如byte转char,char转int等;
2、而所占位数多的转为所占位数少的默认情况下不能实现转换,需要强制类型转换,这样可能会丢失一部分原始数据;
3、此外,boolean类型数据和其他七种不能互相转换。

6.Java是从()语言改进重新设计
正确答案: B

A Ada

B C++

C Pascal

D BASIC

解析:Java是一种简单易学的语言,它是在c、C++的基础上开发出来了,它保留一C、C++的一些特性,当也取消了它们的一些难理解、不易使用的内容如指针、多重继承等。对于java来说,除了简单外它还有纯面向对象、分布式、健壮性、多平台、多线程、安全性比较高等特性的编程语言。

7.Math.round(11.5) 等于:()
正确答案: C

A 11

B 11.5

C 12

D 12.5

解析:round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。 ceil是天花板,向上取整。 floor是地板,向下去整。

8 有一个源代码,只包含import java.util.* ; 这一个import语句,下面叙述正确的是? ( )
正确答案: C

A 只能写在源代码的第一句

B 可以访问java/util目录下及其子目录下的所有类

C 能访问java/util目录下的所有类,不能访问java/util子目录下的所有类

D 编译错误

解析: java.util.*,只能读取其目录下的类,不能读取其子目录下的类。
因为其根目录和子目录下可能有同名类,若都能读取,则会混淆。

9 Java 提供的事件处理模型是一种人机交互模型。它有三个基本要素
正确答案: A B D

A 事件源

B 事件对象

C 事件过程

D 事件监听器
解析:
Java 提供的事件处理模型是一种人机交互模型。它有三个基本要素:

  1. 事件源(Event Source):即事件发生的场所,就是指各个组件,如按钮等,点击按钮其实就是组件上发生的一个事件;

  2. 事件(Event):事件封装了组件上发生的事情,比如按钮单击、按钮松开等等;

  3. 事件监听器(Event Listener):负责监听事件源上发生的特定类型的事件,当事件到来时还必须负责处理相应的事件;

  1. 下面有关java基本类型的默认值和取值范围,说法错误的是?

正确答案: C

A 字节型的类型默认值是0,取值范围是-27—27-1

B boolean类型默认值是false,取值范围是true\false

C 字符型类型默认是0,取值范围是-2^15 —2^15-1

D long类型默认是0,取值范围是-263—263-1

解析:在这里插入图片描述

习题二
1 下面程序段执行完成后,则变量sum的值是( )。

 int  b[][]={{1}, {2,2}, {2,2,2}};

int sum=0;

for(int i=0;i<b.length;i++) {

    for(int j=0;j<b[i].length;j++) {

        sum+=b[i][j];

    }

} 

正确答案: B

A 32

B 11

C 2

D 3
解析:对二维数组进行遍历,结果得到11.

2 以下哪个类型是基本数据类型()

正确答案: A

A int

B String

C Byte

D Float
解析: 基本类型四类八种,其余全是引用类型
四类八种:
整数(byte short int long)
浮点数(float double)
字符型(char)
逻辑性(boolean)
3 下列语句序列执行后,输出结果是()

 public class ex{
public static void main(String[]args){
int a=13;
a=a/5;
System.out.println(a);
}
} 

正确答案: B

A 1

B 2

C 3

D 4
解析:13/5=2······3 由于int 为整形,取整结果为2.
4 下列哪种情况可以终止当前线程的运行?
正确答案: D

A 当一个优先级高的线程进入就绪状态时

B 当该线程调用sleep()方法时

C 当创建一个新线程时

D 抛出一个异常时
解析: 优先级高的并不一定会马上执行。sleep方法会阻塞一个线程并不会终止创建一个新的线程时也不会终止另一个线程当抛出一个异常后程序会结束,所以线程也会被终止
5 下面赋值语句中正确的是()
正确答案: A

A double d=5.3e12;

B float f=11.1;

C int i=0.0;

D Double oD=3;
解析:
java中整型默认的是int,浮点默认的是double.
B: double类型的11.1 转成 float,是需要强制转换的
C: double类型的0.0 转成 int,也是需要强制转换的
D: int 转为 封装类型Double,是无法编译的
Double oD = 3.0, 会把double类型的3.0自动装箱为Double,没有问题

6 在表结构中最常用的是线性表,栈和队列不太常用。
正确答案: B

A 正确

B 错误
7 矩阵中的行列数可以是不相等的,这样的说法正确吗?

正确答案: A

A 正确

B 不正确
8 如何跳出Array的forEach循环?( )
正确答案: A

A break

B return true

C return false

D 以上都不是
9 对于一维整形数组 a ,以下描述正确的是()
正确答案: D

A int a(10)

B int n=10,a[n]

C int n
scanf(“%d”, &n)
int a[n]

D #define SIZE 10
int a[SIZE]
解析: 定义一个数组使用[]确定其大小,[]中的值须为定制,define宏定义的值也为定值,可以用来定义数组若需要定义不确定长度的则使用new进行分配,
int *a=new int[size];
10 int a[][3]={{1},{3,2},{6,7,8},{9}};中a[2][1]的值是()

正确答案: D

A 3

B 6

C 2

D 7
解析:将二维数组写出来为:
1 0 0 0
3 2 0 0
6 7 8 0
9 0 0 0
因此a[2][1]结果为7.
习题三
1 在 main() 方法中给出的整型数组,如果将其写到一个文件中,需要( )。
正确答案: B

A 标准输出流System.out.println()。

B 建立数据字节输出流。

C 建立数据字节输入流。

D 标准输入流System.in.read()。

解析:Java中的io都是以程序(内存)为参照物的,写入文件相比程序是向外写,程序是主动方,即从程序向文件输出,且传输字符数组,故选择建立数据字节输出流。

2 对以下二维数组的正确声明是( )

正确答案: C

A int a[3][];

B float a(3,4)

C double a[][4];

D float a(3)(4);

解析:在JAVA中 A选项的写法是正确的。

3 一个文件中的数据要在控制台上显示,首先需要( )。
正确答案: C

A 使用标准输出流System.out.println()。

B 建立文件输出流。

C 建立文件输入流。

D 标准输入流System.in.read()。

解析:首先要把这个文件读进来,然后再输出,所以首先要建立文件输入流,然后再建立标准输出流。

4 关于继承的说法正确的是()。

正确答案: A

A 子类将继承父类所有的数据域和方法。

B 子类将继承父类的其可见的数据域和方法。

C 子类只继承父类public方法和数据域

D 子类只继承父类的方法,而不继承数据域

5 下面属于java引用类型的有?

正确答案: A D

A String

B byte

C char

D Array

解析: java语言是强类型语言,支持的类型分为两类:基本类型和引用类型。基本类型包括boolean类型和数值类型,数值类型有整数类型和浮点类型。整数类型包括:byte、short、int、long和char;浮点类型包括:float和double引用类型包括类、接口和数组类型以及特殊的null类型。

6 以下代码执行的结果显示是多少( )?

在这里插入图片描述

正确答案: D

A true,false,true

B false,true,false

C true,true,false

D false,false,true

解析:Interger 赋予的int数值在-128 - 127的时候,直接从cache中获取,这些cache引用对Integer对象地址是不变的,但是不在这个范围内的数字,则new Integer(i) 这个地址是新的地址,不可能一样的.

7 有以下代码片段:

String str1="hello";

String str2="he"+ new String("llo");

System.out.println(str1==str2);

请问输出的结果是:

正确答案: D

A true

B 都不对

C null

D false

解析:
String str1=“hello”; 这样创建字符串是存在于常量池中String str2=new String(“hello”); str2存在于堆中,==是验证两个对象是否是一个(内存地址是否相同),用+拼接字符串时会创建一个新对象再返回。

8 若二维数组 a 有 m 列,则在数组元素 a[i][j] 前的元素个数为()

正确答案: B

A j * m + i

B i * m + j

C i * m + j - 1

D j * m + i - 1

9 以下叙述中正确的是()

正确答案: B

A 线性表的线性存储结构优于链表存储结构

B 二维数组是它的每个数据元素为一个线性表的线性表

C 栈的操作方式是先进先出

D 队列的操作方式先进后出

解析:
A:线性表查找复杂度为O(1),添加删除元素复杂度为O(n),而链表查找复杂度为O(n),添加删除元素时空复杂度为O(1),所以二者无法直接比较,在不同***作下各有优缺点
B:二维数组可以看多一个一维数组,而一维数组的每一个元素都是另一个一位数组,所以是一个相对的二维数组,B选项正确。
C:由于栈的结构是只有一个出口,先进的元素在栈底部无法先出栈,所以先进后出
D:由于队列的结构前面是入口,后面是出口,先进的元素会优先从队尾出栈,所以是先进先出

10 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()(1<=i<=n+1)

正确答案: C

A O(0)

B O(1)

C O(n)

D O(n2)

解析:顺序存储的根据数组指针直接定位,在顺序表的任何位置上插入一个数据元素,平均需要移动n/2个数据元素,算法效率为O(n)

习题四

1 final方法等同于private方法。( )

正确答案: B

A 正确

B 错误
解析:private方法只可以在类的内部使用,在类外根本访问不到, 而final方法可以在类外访问,但是不可以重写该方法,就是说可以使用该方法的功能但是不可以改变其功能,这就是private方法和final方法的最大区别

2 对于同一类中的两个方法 , 在判断它们是不是重载方法时 , 肯定不考虑( )

确答案: C

A 参数个数

B 参数类型

C 返回值类型

D 参数顺序
解析: 重载:类中可以创建多个方法,它们具有相同的名字,但具 有不同的参数和不同的定义。调用方法时通过传递 给它们的不同参数个数和参数类型 给它们的不同参数个数和参数类型 给它们的不同参数个数和参数类型 来决定具体使用哪个方法 , 这就是多态性。

3 关于 JAVA 堆,下面说法错误的是()

正确答案: D

A 所有类的实例和数组都是在堆上分配内存的

B 对象所占的堆内存是由自动内存管理系统回收

C 堆内存由存活和死亡的对象,空闲碎片区组成

D 数组是分配在栈中的
解析: Java把内存分成两种,一种叫做栈内存,一种叫做堆内存。

在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。

堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。

引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象在没有引用变量指向它的时候(比如先前的引用变量x=null时),才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因。

4 下列选项中 , 不属于字符型常量的是( )

正确答案: B

A ’a’

B ”C”

C ’\n’

D ’\123’
解析:字符用单引号,字符串用双引号,与引号中的内容无关

5 若所用变量都已正确定义,以下选项中,非法的表达式是()

正确答案: C

A a!= 4||b==1

B ’a’ % 3

C ’a’ = 1/3

D ’A’ + 32
解析:'a’是个常数,不能赋值

6 在java中,下列标识符不合法的有( )

正确答案: A C D

A new

B $Usdollars

C 1234

D car.taxi
解析:Java标识符由数字,字母和下划线(_),美元符号($)组成。在Java中是区分大小写的,而且还要求首位不能是数字。最重要的是,Java关键字 不能当作Java标识符。

7 如下Java语句 double x=2.0; int y=4; x/=++y; 执行后,x的值是()
正确答案: C

A 0.5

B 2.5

C 0.4

D 2.0
解析: ++y,则y=5,int的5转成double的5,x=2.0/5=0.4

8 下面哪些情况可以引发异常:
正确答案: A B C

A 数组越界

B 指定URL不存在

C 使用throw语句抛出

D 使用throws语句
9 应用程序的main方法中有以下语句,则输出的结果( )

String s1=new String( ” xyz ” );
String s2=new String( ” xyz ” );
Boolean b1=s1.equals(s2);
Boolean b2=(s1==s2);
System .out.print(b1+ ” ” +b2);
正确答案: A

true false

false true

true true

false false

解析: String s1=new String( ” xyz ” ); //创建了String类型的内容为xyz的s1对象
String s2=new String( ” xyz ” ); //创建了String类型的内容为xyz的s2对象
Boolean b1=s1.equals(s2); //比较s1对象和s2对象的内容相等,返回true。
Boolean b2=(s1==s2); //比较s1和s2两个对象的存储地址是否相等,明显两者分别存储在不同的地址,所以返回:false。

10 如果int x=20, y=5,则语句System.out.println(x+y +""+(x+y)+y); 的输出结果是()
正确答案: D

A 2530

B 55

C 2052055

D 25255
解析:
1)不论有什么运算,小括号的优先级都是最高的,先计算小括号中的运算,得到x+y +""+25+y
2)任何字符与字符串相加都是字符串,但是是有顺序的,字符串前面的按原来的格式相加,字符串后面的都按字符串相加,得到25+“”+25+5
3)上面的结果按字符串相加得到25255

猜你喜欢

转载自blog.csdn.net/w_Antetokounmpo/article/details/83143443