习题一
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 提供的事件处理模型是一种人机交互模型。它有三个基本要素:
事件源(Event Source):即事件发生的场所,就是指各个组件,如按钮等,点击按钮其实就是组件上发生的一个事件;
事件(Event):事件封装了组件上发生的事情,比如按钮单击、按钮松开等等;
事件监听器(Event Listener):负责监听事件源上发生的特定类型的事件,当事件到来时还必须负责处理相应的事件;
正确答案: 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
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
习题五
1 已知 声明并初始化二维数组 int a[ ][ ]={{1,2},{3,4},{5,6}} ,则 a[1][1] 的值为()
正确答案: C
A 1
B 2
C 4
D 5
解析:二维数组为:
1 2
3 4 角标1,1 是第二行第二列。
5 6
2 对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理。
正确答案: B
A 正确
B 错误
3 要表示10个学生的成绩,下列声明并初始化数组正确的是()
正确答案: D
A int[] score=new int[ ]
B int score[10]
C int score[]=new int[9]
D int score[]=new int[10]
解析:创建数组定义格式为: 数据类型 数组名[]=new 数据类型[数据总数]
4 关于如下程序的描述哪个是正确的?( )
public class Person{
static int arr[] = new int[5];
public static void main(String a[]){
System.out.println(arr[0]);
}
}
正确答案: C
A 编译将产生错误
B 编译时正确,但运行时将产生错误
C 正确,输出0
D 正确,输出 null
解析:类的成员变量会被默认初始化
5 下列关于计算机系统和Java编程语言的说法,正确的是()
正确答案: C
A 计算机是由硬件、操作系统和软件组成,操作系统是缺一不可的组成部分。
B Java语言编写的程序源代码可以不需要编译直接在硬件上运行。
C 在程序中书写注释不会影响程序的执行,可以在必要的地方多写一些注释。
D Java的集成开发环境(IDE),如Eclipse,是开发Java语言必需的软件工具。
6 下列不属于算法结构的是()
正确答案: C
A 输入数据
B 处理数据
C 存储数据
D 输出结果
解析:算法包括0个或多个输入,1个或多个输出,中间有穷个处理过程。
存储结构不属于算法结构
7 What is displayed when the following is executed;
double d1=-0.5;
System.out.println("Ceil d1="+Math.ceil(d1));
System.out.println("floor d1="+Math.floor(d1));
正确答案: A
A Ceil d1=-0.0; floor d1=-1.0
B Ceil d1=0.0; floor d1=-1.0
C Ceil d1=-0.0;floor d1=-0.0
D Ceil d1=0.0;floor d1=0.0
E Ceil d1=0;floor d1=-1
解析:
这里主要是有一点:
1
Math.ceil(d1)
ceil 方法上有这么一段注释:If the argument value is less than zero but greater than -1.0, then the result is negative zero
如果参数小于0且大于-1.0,结果为 -0
1
Math.floor(d1)
ceil 和 floor 方法 上都有一句话:If the argument is NaN or an infinity or positive zero or negative zero, then the result is the same as the argument,意思为:如果参数是 NaN、无穷、正 0、负 0,那么结果与参数相同,
如果是 -0.0,那么其结果是 -0.0
8 以下二维数组声明合法的是( )
正确答案: C
char[2][3] ch = new char[][]
char[2][] ch = new char[][3]
char[][] ch = new char[2][3]
char[][] ch = new [2]char[3]
解析:定义数组,等号左边不能出现数字,也就是数组的不管什么大小 不能出现在左边
9 我们在程序中经常使用“System.out.println()”来输出信息,语句中的System是包名,out是类名,println是方法名。()
正确答案: B
A 正确
B 错误
解析:System是java.lang包下的一个类,out为System的final静态成员(PrintStream类型),println()是PrintStream类的实例方法。
10 下面哪个标识符是合法的?
正确答案: D
A “9HelloWorld”
B “_Hello World”
C “Hello*World”
D "Hello W o r l d " 解 析 : 标 识 符 只 能 由 数 字 , 字 母 , 下 划 线 , 和 美 元 符 号 ( World" 解析:标识符只能由数字,字母,下划线,和美元符号( World"解析:标识符只能由数字,字母,下划线,和美元符号(),并且数字不能为首。
习题六
1 一个以”.java”为后缀的源文件()
正确答案: C
A 只能包含一个类,类名必须与文件名相同
B 只能包含与文件名相同的类以及其中的内部类
C 只能有一个与文件名相同的类,可以包含其他类
D 可以包含任意类
解析:一个.java文件中,只能存在一个类是用public修饰的,并且这个类必须与类名一致,文件中其他的类不能是public权限的,但可以有很多个类。
2 /…/中可以嵌套//注释,也能嵌套/…/注释。
正确答案: B
A 正确
B 错误
3 在 JAVA 编程中, Java 编译器会将 Java 程序转换为( )
正确答案: A
A 字节码
B 可执行代码
C 机器代码
D 以上都不对
解析: 编译器将Java源代码编译成字节码class文件类加载到JVM里面后,执行引擎把字节码转为可执行代码执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行。
4 若下列所用变量均已经正确定义,一下表达式中不合法的是
正确答案: B
A x>>3
B +++j
C a=x>y?x:y
D x%=4
解析: 运算符优先级口诀:单目算术位关系,逻辑三目后赋值。
单目:++、–
算术:+、-、*、/、%
位:位移运算符:<<、>>、>>>
关系:<、>、<=、>=、==
逻辑:&&、||、!、&、|、^
三目:三目运算符(又称为三元运算符)A>B? x:y
后:凑字数用的。。
赋值:=
5 下列命令中,用来运行 Java 程序的是()
正确答案: A
A java
B javadoc
C jar
D javac
解析:A.java用来运行一个.class文件
B.javadoc用来生成api文档
C.jar用来生成jar包
D.javac用来把.java文件编译为.class文件
6 下列哪个选项是正确计算42度(角度)的余弦值?
正确答案: C
A double d=Math.cos(42)
B double d=Math.cosine(42)
C double d=Math.cos(Math.toRadians(42))
D double d=Math.cos(Math.toDegrees(42))
解析:首先将角度转换为弧度,因此会调用到Math.toRadians(). 接着进一步求弧度的余弦值会调用Math.cos()
7 以下哪一个不是赋值符号?
正确答案: C
A +=
B <<=
C <<<=
D >>>=
解析: C.混合赋值运算符的使用<<表示左移位, >>表示带符号右移位 , >>>表示无符号右移但是没有<<<运算符
8 顺序执行下列程序语句后,则b的值是()
String a=“Hello”;
String b=a.substring(0,2);
正确答案: C
A Hello
B Hel
C He
D null
解析: substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串。
9 下面哪一项不是 java 类访问控制关键字
正确答案: B
A public
B this
C private
D protected
解析:this代表当前实例对象,访问控制修饰符只有public protected private 以及默认的空
10 关于JAVA堆,下面说法错误的是()?
正确答案: C
A 所有类的实例和数组都是在堆上分配内存的
B 堆内存由存活和死亡的对象,空闲碎片区组成
C 数组是分配在栈中的
D 对象所占的堆内存是由自动内存管理系统回收
解析:数组是分配在堆里面的
习题七
1 以下哪项不是java基础类型()
正确答案: C
A int
B boolean
C String
D float
解析:ava中基本数据类型大体分为两类 数字类(byte,short,int,long,float,double,char),布尔类型(boolean); 备注:由于char可以和数字间转换,也可认为大的范围是数字类型的。
2 Java 语言用以下哪个类来把基本类型数据封装为对象()
正确答案: A
A 包装类
B Class
C Math
D Object
解析: java的数据类型分为两大类:基本类型和引用类型;基本类型只能保存一些常量数据,引用类型除了可以保存数据,还能提供操作这些数据的功能;
为了操作基本类型的数据,java也对它们进行了封装, 得到八个类,就是java中的基本类型的封装类;他们分别是:
八种基本类型: byte short int long float double char boolean
对应的包装类 : Byte Short Integer Long Float Double Character Boolean
3 在Java中,对于不再使用的内存资源,如调用完成的方法,“垃圾回收器”会自动将其释放。( )
正确答案: B
A 正确
B 错误
解析:方法调用时,会创建栈帧在栈中,调用完是程序自动出栈释放,而不是gc释放
4 Which of the following statements are valid array declaration?
(A) int number();
(B) float average[];
© double[] marks;
(D) counter int[];
正确答案: A
A (B) & ©
B (A)
C (A) & ©
D (D)
解析:数组的两种定义方式。 int[] nums; int nums[];
5 如下语句通过算术运算和逻辑运算之后i和 j的结果是( )
int i=0;
int j=0;
if((++i>0)||(++j>0))
{
//打印出i和j的值。
}
正确答案: D
A i=0;j=0
B i=1;j=1
C i=0;j=1
D i=1;j=0
解析:||符号为双或(短路或),当前面的条件为真时,后面的条件不再执行。
6 Java 程序中使用赋值运算符进行对象赋值时,可以得到两个完全相同的对象。
正确答案: B
A 正确
B 错误
解析:对象赋值时,比如A=B,只是把A对象的地址指向了B对象的地址,所以其实对象只有一个
7 假设有以下代码
String s=”hello”;
String t=”hello”;
char c[] ={‘h’,’e’,’l’,’l’,’o’};
下列选项中返回false的语句是:
正确答案: B
A s.equals(t);
B t.equals©;
C s==t;
D t.equals(new String(“hello”));
解析: ==是比较地址值是否相等,.equals()方法是比较值是否相等,s和t两个变量都是指向字符串常量池中的同一个内存区域,所以地址值相等,值当然也相等,AC正确
Char c[]是一个字符数组,和字符串t使用.equals()方法比较,返回false,D选项new了一个新的字符串,它的值和s、t是相同的,但是由于是新new出来的,就会重新开辟一个空间进行存储,所以地址不同,但是值相同
8 下列符号中可以在 java 程序里表示单行注释的是( )
正确答案: C
A –
B /* ……*/
C //
D /** ……/
解析:// 为单行注释
/········*/ 为多行注释
9 以下说法错误的是()
正确答案: C
A 数组是一个对象
B 数组不是一种原生类
C 数组的大小可以任意改变
D 在Java中,数组存储在堆中连续内存空间里
解析:Java中数组是对象,不是基本数据类型(原生类),大小不可变且连续存储,因为是对象所以存在堆中。
10 建立Statement对象的作用是?
正确答案: C
A 连接数据库
B 声明数据库
C 执行SQL语句
D 保存查询结果
习题八
1 类声明中,声明一个类不能再被继承的关键字是()
正确答案: C
A public
B abstract
C final
D static
解析:final关键字可用于修饰类、变量和方法。final修饰的类不能被继承,final修饰的方法不能被重写,final修饰的变量不可被修改,一旦获得初始值,该变量就不能被重新赋值。
public:访问控制修饰符,用于修饰类、类的方法、属性或者构造器。
abstract:用于修饰抽象类或者抽象方法
static:用于修饰类、方法或者成员变量,表明该类是静态类或者方法、成员变量属于当前类
2 下列整型的最终属性i的定义中,正确的是()
正确答案: A
A static final int i=100;
B final i;
C static int i;
D final float i=1.2f;
解析: 一:整形
二:最终属性(final)
三:定义,而不只是声明
3 .下列哪个对访问修饰符作用范围由大到小排列是正确的?
正确答案: D
A private>default>protected>public
B public>default>protected>private
C private>protected>default>public
D public>protected>default>private
解析:
4 .String str1 = “abc”,“abc”分配在内存哪个区域?
正确答案: C
A 堆
B 栈
C 字符串常量区
D 寄存器
解析: 用new创建的对象在堆区
函数中的临时变量在栈去
java中的字符串在字符串常量区
5 . 若 a 的值为 3 时,下列程序段被执行后, c 的值是多少?( )
int c = 1;
if ( a>0 ){
if ( a>3){
c = 2;
}
else{
c = 3;
}
}
else{
c = 4;
}
正确答案: C
A 1
B 2
C 3
D 4
解析:根据if…else语句执行
6 . 下列修饰符中,能够使得某个成员变量只能被它所在包访问到和它的子类访问到的是( )
正确答案: A
A protected
B public
C private
D 应不加修饰符
解析:与前面的选择题相同
7 .下面哪些可能是重载的基本条件()(注意:是可能为重载的基本条件)
正确答案: A B D
A 参数的类型不同
B 参数的顺序不同
C 函数的返回值类型不同
D 参数的个数不同
解析:重载的概念是:方法名称相同,参数个数、次序、类型不同因此重载对返回值没有要求,可以相同,也可以不同但是如果参数的个数、类型、次序都相同,方法名也相同,仅返回值不同,则无法构成重载
8 . 有程序片段如下,以下表达式结果为 true 的是( )
Float s=new Float(0.1f);
Float t=new Float(0.1f);
Double u=new Double(0.1);
正确答案: B
A s==t
B s.equals(t)
C u.equals(s)
D t.equals(u)
解析:一般情况下,浮点数是不直接进行判等比较的,因为浮点数存在精度问题。要比较两个浮点数,一般的比较方法是设定一个精度,当二者的差小于某个精度时,认为二者相等。例如:
if (Math.abs(s - t) < 0.001) {
System.out.println(“equal”);
}else {
System.out.println(“not equal”);
}
9 . 在 java 中,一个类可同时定义为许多同名的方法,这些方法的形式参数个数,类型或顺序各不相同,传回的值可能各不相同,这种面向对象的特性称为()
正确答案: C
A 隐藏
B 覆盖
C 重载
D 无此特性
解析:重载的定义。
10 . 下面这三条语句
1
2
3
System.out.println(“is ”+ 100 + 5);
System.out.println(100 + 5 +“ is”);
System.out.println(“is ”+ (100 + 5));
的输出结果分别是? ( )
正确答案: D
A is 1005, 1005 is, is 1005
B is 105, 105 is, is 105
C is 1005, 1005 is, is 105
D is 1005, 105 is, is 105
解析:1."is"说明后面的内容都会被强制转换为string,所以是最后结果是拼接起来的
2.100+5先得到105,然后与is拼接
3.先算括号内的
习题九
1 . “先进先出”的容器是:( )
正确答案: B
A 堆栈(Stack)
B 队列(Queue)
C 字符串(String)
D 迭代器(Iterator)
解析: 堆栈(Stack) : 如子弹入弹夹一样 先进后出
队列(Queue):如排队过隧道 先进先出
2 . 下面所示的java代码,运行时,会产生()类型的异常
int Arry_a[] = new int[10];
System.out.println(Arry_a[10]);
正确答案: D
A ArithmeticException
B NullPointException
C IOException
D ArrayIndexOutOfBoundsException
解析:角标10对应的是数组的第11个数字,因此是角标越界错误。
2 . 下列关于Java语言中String和char的说法,正确的是()
正确答案: C
A String是Java定义的一种基本数据类型。
B String是以“\0”结尾的char类型的数组char[]。
C 使用equals()方法比较两个String是否内容一样(即字符串中的各个字符都一样)。
D Char类型在Java语言里面存储的是ASCII码。
解析:A 基本数据类型包括byte,short,int,long,float,double,char,boolean,所以A错。
B,C语言当中是这样,java不是, String内部是用char[]数组实现的,不过结尾不用\0。
C 对,字符串内容比较用equals方法。
D char存储的unicode码,不仅可以存储ascII码,汉字也可以。
3 .java中,用( )关键字定义常量?
正确答案: A
A final
B #define
C float
D const
解析:final关键字可用于修饰类、变量和方法。final修饰变量时,表示该变量一旦获得了初始值就不可被改变,final既可以修饰成员变量也可以修饰局部变量、形参。
4 .以下会产生信息丢失的类型转换是( )
正确答案: B
A float a=10
B int a=(int)8846.0
C byte a=10; int b=-a
D double d=100
解析:精度丢失只会发生在从大范围到小范围的转换上面四个选项,只有 B 是从 double 到 int ,也就是从大范围到小范围。
5 .给定代码:
public class SwitchTest{//1
public static void main(String[] args) {//2
System.out.println("value="+switchit(4));//3
}//4
public static int switchit(int x) {
int j=1;
switch (x) {
case 1:j++;
case 2:j++;
case 3:j++;
case 4:j++;
case 5:j++;
default:j++;
}
return j+x;
}
}
第三行将输出什么?
正确答案: B
A value=6
B value=8
C value=3
D value=5
E value=4
解析:由于每个switch语句都没有break,所以会一直执行下去。
6 .以下()不是合法的标识符?
正确答案: C
A STRING
B x3x
C void
D deSf
解析:void 为关键字,在java中关键字不能作为标识符。
7 . 下列在Java语言中关于数据类型和包装类的说法,正确的是()
正确答案: B
A 基本(简单)数据类型是包装类的简写形式,可以用包装类替代基本(简单)数据类型
B long和double都占了64位(64bit)的存储空间。
C 默认的整数数据类型是int,默认的浮点数据类型是float。
D 和包装类一样,基本(简单)数据类型声明的变量中也具有静态方法,用来完成进制转化等。
解析:在java中long和double都是占8个字节,因此都是占64位。
8 . 以下哪个式子有可能在某个进制下成立()?
正确答案: A
A 13*14=204
B 12*34=568
C 14*14=140
D 1+1=3
解析:在A选项中代表的是8进制
9 .下列代码中的错误是()
public class Test
(2) {
(3) public static void main(String [] args)
(4) {
(5) int i;
(6) i+=1;
(7) }
(8) }
正确答案: D
A 非法的表达式 i+=1
B 找不到符号i
C 类不应为public
D 尚未初始化变量i
解析:在方法内定义的变量在使用之前必须初始化,否则报错。
10 .一个以”.java”为后缀的源文件
正确答案: C
A 只能包含一个类,类名必须与文件名相同
B 只能包含与文件名相同的类以及其中的内部类
C 只能有一个与文件名相同的类,可以包含其他类
D 可以包含任意类
解析:
当编写一个java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元)。每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包括大小写,但不包括文件的后缀名.java)。每个编译单元只能有一个public类,否则编译器就不会接受。如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,这是因为它们不是public类,而且它们主要用来为主public类提供支持。 --《Java 编程思想》
注:public类不是必须的,但是如果源文件中有一个(只能有一个)public类的话,文件名必须与这个public类同名,原因 是为了方便虚拟机在相应的路径中找到相应的类所对应的字节码文件。所以在没有public类的Java文件中,文件名和类名都没什么联系。
习题十
1 . 一个文件中的字符要写到另一个文件中,首先需要( )。
正确答案: C
A 使用标准输出流System.out.println()。
B 建立文件字符输出流。
C 建立文件字符输入流。
D 标准输入流System.in.read()。
解析:一个文件中的字符要写到另一个文件中,首先需要读取这个文件,所以要先建立输入流,然后写到另一个文件,这时再建立输出流.
所以要先建立输入流,再建立输出流.
2 . 下列选项中符合Java命名规则的标识符是()
正确答案: D
A 2japro
B &Class
C const
D _123
解析:
Java 标识符有如下命名规则:
由26个英文字母大小写,数字:0-9 符号:_ $ 组成
标识符应以字母、_ 、$开头。
标识符不能是关键字。
Java中严格区分大小写
3 .
public class Test
{
public int x;
public static void main(String []args)
{
System. out. println("Value is" + x);
}
}
对于上面这段代码,以下说法正确的是:
正确答案: C
A 程序会打出 “Value is 0”
B 程序会抛出 NullPointerException
C 非静态变量不能够被静态方法引用
D 编译器会抛出 "possible reference before assignment"的错误
解析:非静态成员只能被类的实例化对象引用,因此这里在静态方法中访问x会造成编译出错
4 .代码片段:
byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6;
b6=b4+b5;
b3=(b1+b2);
System.out.println(b3+b6);
关于上面代码片段叙述正确的是()
正确答案: C
A 输出结果:13
B 语句:b6=b4+b5编译出错
C 语句:b3=b1+b2编译出错
D 运行期抛出异常
解析: 被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了
而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。
Java中的byte,short,char进行计算时都会提升为int类型。
5 . 下列修饰符中与访问控制权限无关的是?( )
正确答案: D
A private
B public
C protected
D final
解析:
private : 修饰私有变量
public : 修饰公有变量
protected: 修饰受保护变量
没有final, final用于保护变量不受改变
6 .Math.round(11.5) 等于多少 (). Math.round(-11.5) 等于多少 ( ).
正确答案: C
A 11 ,-11
B 11 ,-12
C 12 ,-11
D 12 ,-12
解析:floor : 意为地板,指向下取整,返回不大于它的最大整数 ceil : 意为天花板,指向上取整,返回不小于它的最小整数 round : 意为大约,表示“四舍五入”,而四舍五入是往大数方向入。Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11而不是-12。
7 .下面代码的运行结果是()
public static void main(String[] args){
String s;
System.out.println("s="+s);
}
正确答案: C
A 代码编程成功,并输出”s=”
B 代码编译成功,并输出”s=null”
C 由于String s没有初始化,代码不能编译通过。
D 代码编译成功,但捕获到NullPointException异常
解析:局部变量没有默认值
8 .以下表达式中,正确的是()
正确答案: C D
A byte i=128
B boolean i=null
C long i=0xfffL
D double i=0.9239d
解析:byte的取值范围为-128~127
null可以赋值给引用变量,不能将null赋给基本类型变量
9 .What is the result of compiling and executing the following fragment of code:
Boolean flag = false;
if (flag = true)
{
System.out.println(“true”);
}
else
{
System.out.println(“false”);
}
正确答案: C
A The code fails to compile at the “if” statement.
B An exception is thrown at run-time at the “if” statement.
C The text“true” is displayed.
D The text“false”is displayed.
E Nothing is displayed.
解析:Boolean修饰的变量为包装类型,初始化值为false,进行赋值时会调用Boolean.valueOf(boolean b)方法自动拆箱为基本数据类型,因此赋值后flag值为true,输出文本true。 如果使用==比较,则输出文本false。if的语句比较,除boolean外的其他类型都不能使用赋值语句,否则会提示无法转成布尔值。
10 .Java中基本的编程单元为:
正确答案: A
A 类
B 函数
C 变量
D 数据
解析:java的基本编程单元是类,基本存储单元是变量。
习题十一
1 . 下面哪个不是Java语言的关键字()
正确答案: B
A default
B number
C abstract
D package
解析:不是Java关键字,申清楚题目。
2 . 设有定义 int a=3 ,b=4,c=5; 则以下的表达式中 , 值为 false 的是 ()
正确答案: D
A a < b && b < c
B a <= b
C a < ( b + c )
D ! ( a < b )
解析:
a < b && b < c true && true true
a <= b true
a < ( b + c ) true
! ( a < b ) !true false
3 .关于以下程序段,正确的说法是:()
String s1="abc"+"def";//1
String s2=new String(s1);//2
if(s1.equals(s2))//3
System.out.println(".equals succeeded");//4
if(s1==s2)//5
System.out.println("==succeeded");//6
正确答案: C
A 行4,行6都不执行
B 行6执行,行4不执行
C 行4执行,行6不执行
D 行4,行6都将执行
解析:s2实在堆里面定义的,而s1是常量池里面定义的。
equals比较的是值,==比较的是地址!
4 . 下面哪些赋值语句是正确的()
正确答案: A B D
A long test=012
B float f=-412
C int other =(int)true
D double d=0x12345678
E byte b=128
解析:基本类型的定义。
5 . 队列(Queue)是先进先出的。( )
正确答案: A
A 正确
B 错误
解析:队列先进先出,栈先进后出
6 . 下列说法哪个正确( )
正确答案: C
A 不需要定义类,就能创建对象
B 对象中必须有数据域和方法
C 数据域可以是基本类型变量,也可以是一个对象
D 数据域必须是基本类型变量
解析: A.没有模板,怎么可能创建对象,创建对象必须先要定义类,常识
B.对象中的数据域和方法取决于该对象的类,类里面有就有,没有就没有
D.数据域不一定是基本类型,也可以是引用类型
7 . 下列关于 java 语言的特点,描述错误的是()
正确答案: C
A java是跨平台的编程语言
B java支持分布式计算
C java是面向过程的编程语言
D java支持多线程
解析:java是面向对象的编程语言
8 .装箱、拆箱操作发生在: ()
正确答案: C
A 类与对象之间
B 对象与对象之间
C 引用类型与值类型之间
D 引用类型与引用类型之间
解析:通俗的讲,就是基本数据类型和包装类之间的转换。如: int 类型和 Integer 类的转换
基本数据类型转化成包装类是装箱 (如: int --> Integer)。
包装类转化成基本数据类型就是拆箱 (如:Integer --> int)。
包装类就是引用类型,基本数据类型就是值类型。所以选C
9 .以下方法,哪个不是对add方法的重载?
public class Test
{
public void add( int x,int y,int z){}
}
正确答案: B
A public int add(int x,int y,float z){return 0;}
B public int add(int x,int y,int z){return 0;}
C public void add(int x,int y){}
D 以上都不是
解析: 方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
原则如下:
一.方法名一定要相同。
二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
1.如果参数个数不同,就不管它的参数类型了!
2.如果参数个数相同,那么参数的类型或者参数的顺序必须不同。
三.方法的返回类型、修饰符可以相同,也可不同。
10 .设int x=1,float y=2,则表达式x/y的值是:()
正确答案: D
A 0
B 1
C 2
D 以上都不是
解析:x/y= (float)1.0/(float)2.0=0.5 (float类型的)
习题十二
1 .下面有关重载函数的说法中正确的是
正确答案: C
A 重载函数必须具有不同的返回值类型
B 重载函数形参个数必须不同
C 重载函数必须有不同的形参列表
D 重载函数名可以不同
解析: 重载: 参数表 必须 不同( 参数个数不同or参数类型不同or参数个数与类型都不同),与 返回值类型值无关
2 . 类 ABC 定义如下:
1 . public class ABC{
2 . public double max( double a, double b) { }
3 .
4 . }
将以下哪个方法插入行 3 是不合法的。()
正确答案: B
A public float max(float a, float b, float c){ }
B public double max (double c, double d){ }
C public float max(float a, float b){ }
D private int max(int a, int b, int c){ }
解析:重载的判别只有两个条件
方法名一致 形参列表不一致
3 . 以下的变量定义语句中,合法的是()
正确答案: C
A byte=128
B boolean=null
C long a=123L
D double=0.9239d
解析:byte范围是 -128~127 A选项数值越界
boolean只有true和false
D选项没有变量名
4 .以下程序的输出结果是
public class Print{
static boolean out(char c){
System.out.println(c);
return true;
}
public static void main(String[] argv){
int i = 0;
for(out('A');out('B') && (i<2);out('C')){
i++;
out('D');
}
}
}
正确答案: A
A ABDCBDCB
B BCDABCD
C 编译错误
D 运行错误
解析: for循环执行开始
首先执行out(‘A’) 输出A;
然后执行out(‘B’)&&(i<2)此时输出B,i=0,判断条件为真,执行for循环的循环体;
执行i++,out(‘D’),输出D i=1;
执行out(‘C’),输出C
然后执行out(‘B’)&&(i<2) 此时输出B,i=1 判断条件为真 ,执行for循环的循环体;
执行i++,out(‘D’),输出D i=2;
执行out(‘C’),输出C
然后执行out(‘B’)&&(i<2) 此时输出B,i=2,不满足i<2 判断条件为假 ,跳出循环;
所以结果为ABDCBDCB
5 . 设有下面两个赋值语句:
a = Integer.parseInt(“1024”);
b = Integer.valueOf(“1024”).intValue();
下述说法正确的是()
正确答案: D
A a是整数类型变量,b是整数类对象。
B a是整数类对象,b是整数类型变量。
C a和b都是整数类对象并且它们的值相等。
D a和b都是整数类型变量并且它们的值相等。
解析:intValue()是把Integer对象类型变成int的基础数据类型;
parseInt()是把String 变成int的基础数据类型;
Valueof()是把String 转化成Integer对象类型;(现在JDK版本支持自动装箱拆箱了。)
本题:parseInt得到的是基础数据类型int,valueof得到的是装箱数据类型Integer,然后再通过valueInt转换成int,所以选择D
6 .Which lines of the following will produce an error?
1 byte a1 = 2, a2 = 4, a3;
2 short s = 16;
3 a2 = s;
4 a3 = a1 * a2;
正确答案: A
A Line 3 and Line 4
B Line 1 only
C Line 3 only
D Line 4 only
解析: short类型转为byte类型出错
a1*a2结果为int类型,转为byte类型出错
7 .int,String,*point,union哪些不是 Java 的数据类型?
正确答案: C D
A int
B String
C *point
D union
解析:数据类型包括基本数据类型和引用数据类型。
8 . 下列描述中,错误的是( )
正确答案: A
A java要求编程者管理内存
B java的安全性体现在多个层次上
C java中没有指针机制
D java有多线程机制
解析:java与C艹很大的一点区别就是java是不需要使用者关注内存分配以及管理的
9 . 下列叙述错误的是( )
正确答案: D
A java提供了丰富的类库
B java很好的利用了网络资源
C java支持多线程
D java不支持TCP/IP协议
10 . 下面是findSum(int m.int n)方法的定义,方法调用findSum(1,5)的返回结果是( )
int findSum(int m, int n){
int sum=0;
for(int i=m;i<=n;i++){
sum+=i;
}
return sum;
}
正确答案: D
A 1
B 5
C 10
D 15
解析:for(i=1;i<=5;i++) 这样理解就好了,sum是1+2+3+4+5;
习题十三
1 . 下列代码的执行结果是:( )
public class Test3{
public static void main(String args[]){
System.out.println(100%3);
System.out.println(100%3.0);
}
}
正确答案: B
A 1和1
B 1和1.0
C 1.0和1
D 1.0和1.0
解析:多种混合计算时,自动将所有数据类型转换为容量最大的一种数据类型。所以都转为float类型。
2 . 一个类中,有两个方法名、形参类型、顺序和个数都完全一样,返回值不一样的方法,这种现象叫覆盖。( )
正确答案: B
A 正确
B 错误
解析:重载(overload)和重写(override)的区别: 重载就是同一个类中,有多个方法名相同,但参数列表不同(包括参数个数和参数类型),与返回值无关,与权限修饰符也无关。调用重载的方法时通过传递给它们不同的参数个数和参数类型来决定具体使用哪个方法,这叫多态。 重写就是子类重写基类的方法,方法名,参数列表和返回值都必须相同,否则就不是重写而是重载。权限修饰符不能小于被重写方法的修饰符。重写方法不能抛出新的异常或者是比被重写方法声明更加宽泛的检查型异常。
3 . 下列循环语句序列执行完成后,i的值是()
int i;
for(i=2;i<=10;i++){
System.out.println(i);
}
正确答案: C
A 2
B 10
C 11
D 不确定
解析:题目问的是i的值,而不是输出的结果i,若是输出结果应为10,而程序运行结束i的值为11
4 . java 语言使用的字符码集是
正确答案: D
A ASCII
B BCD
C DCB
D Unicode
解析:java 语言使用的字符码集是 Unicode。 Unicode(统一码 、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制 编码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。目前的Unicode字符分为17组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面。UTF-8 、UTF-16 、UTF-32 都是将数字转换到程序数据的编码方案。
5 .一个以“.java”为后缀的源文件
正确答案: C
A 只能包含一个public类,类名必须与文件名相同
B 只能包含与文件名相同的public类以及其中的内部类
C 只能有一个与文件名相同的public类,可以包含其他非public类(不考虑内部类)
D 可以包含任意public类
解析: .java文件可以包含多个类,唯一的限制就是:一个文件中只能有一个public类, 并且此public类必须与文件名相同。而且这些类和写在多个文件中没有区别。
6 .在基本 JAVA 类型中,如果不明确指定,整数型的默认是 _类型,带小数的默认是 __ 类型? ( )
正确答案: B
A int float
B int double
C long float
D long double
解析:整型默认为int,如果需要long,须加l或L。小数默认double,d或D可省略,但如果需要float,须加f或F,例如float = 0.1f。
7 . What results from the following code fragment?
int i = 5;
int j = 10;
System.out.println(i + ~j);
正确答案: C
A Compilation error because”~”doesn’t operate on integers
B -5
C -6
D 15
解析: 10原码:0000000000000000,0000000000001010;
~10: 1111111111111111,1111111111110101 变为负数,计算机用补码存储
~10反码:10000000000000000,0000000000001010
~10补码:10000000000000000,0000000000001011,等于 -11
故程序结果-6
8 .下面哪个语句是创建数组的正确语句?( )
正确答案: A B D E
A float f[][] = new float[6][6];
B float []f[] = new float[6][6];
C float f[][] = new float[][6];
D float [][]f = new float[6][6];
E float [][]f = new float[6][];
解析:在Myeclipse中敲了一下,确实ABDE都可以。也就是说数组命名时名称与[]可以随意排列,但声明的二维数组中第一个中括号中必须要有值,它代表的是在该二维数组中有多少个一维数组。
9 .类声明中,声明抽象类的关键字是 ( )
正确答案: B
A public
B abstract
C final
D class
解析:
public 共有类,可以在包外使用,此时,源文件名必须和类名相同。
abstract 抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化。
final 不能被继承,没有子类,final类中的方法默认是final的。
class 只能在包内使用的类
10 . 关于下面代码 int[] x=new int[25]; 描述正确的是()
正确答案: C
A x[25]存放了数据“\0”。
B x[24] 存放了数据“\0”。
C 若访问x[25],程序将抛出异常。
D x[1]访问此数组的第一个元素。
解析:A:不存在x[25] 索引从0开始到length-1
B:x[24] 存的是默认值0(java中没有’\0’这一说)
C:超出内存 正确
D:第二元素
习题十四
1 .
public class Test
{
public static void changeStr(String str)
{
str = "welcome";
}
public static void main(String[] args)
{
String str = "1234";
changeStr(str);
System.out.println(str);
}
}
Please write the output result 。
正确答案: A
A 1234
B welcome
C 空
D 不确定
解析:
此处应该考察Java方法参数传递特性。Java方法调用中,只存在值传递调用。
此处,实参str是引用变量,由于java方法调用是值传递,所以形参str得到的是实参str的一个拷贝。此时形参str和实参str均指向字符串"1234"。
然后,在changeStr方法中,形参str指向了一个新的字符串"welcom",而后方法结束,形参str被销毁。而实参str仍然指向字符串"1234"。
2 .在运行时,由java解释器自动引入,而不用import语句引入的包是()。
正确答案: A
A java.lang
B java.system
C java.io
D java.util
解析:
java.lang包是java语言的核心包,lang是language的缩写
java.lang包定义了一些基本的类型,包括Integer,String之类的,是java程序必备的包,有解释器自动引入,无需手动导入
3 .Math.floor(-8.5)=( )
正确答案: D
A (float)-8.0
B (long)-9
C (long)-8
D (double)-9.0
解析:Math.floor(x) 返回小于等于x的最接近整数,类型为double
4 .下列哪个选项是合法的标识符?()
正确答案: B D
A 123
B _name
C class
D first
解析: Java标识符由 数字、字母、下划线(_)、美元符号($) 组成, 首位不能是数字 。并且 Java关键字不能作为标识符 。
5 .下列选项中属于面向对象设计方法主要特征的是( )。
正确答案: A
A 继承
B 自顶向下
C 模块化
D 逐步求精
解析:面向对象主要特征:封装 继承 多态
6 .对于java类型变量char c,short s,float f,double d,表达式c*s+f+d的结果类型为()
正确答案: D
A float
B char
C short
D double
解析: 自动类型转换遵循下面的规则:
1.若参与运算的数据类型不同,则先转换成同一类型,然后进行运算。
2.转换按数据长度增加的方向进行,以保证精度不降低。例如int型和long型运算时,先把int量转成long型后再进行运算。
3.所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
4.char型和short型参与运算时,必须先转换成int型。
5.在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型将转换为左边变量的类型。如果右边表达式的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。
下图表示了类型自动转换的规则:
7 . 在类Tester中定义方法如下,
public double max(int x, int y) { // 省略 }
则在该类中定义如下哪个方法头是对上述方法的重载(Overload)?
正确答案: B
A public int max(int a, int b) {}
B public int max(double a, double b) {}
C public double max(int x, int y) {}
D private double max(int a, int b) {}
8 . 关于继承和实现说法正确的 是 ? ( )
正确答案: A
A 类可以实现多个接口,接口可以继承(或扩展)多个接口
B 类可以实现多个接口,接口不能继承(或扩展)多个接口
C 类和接口都可以实现多个接口
D 类和接口都不可以实现多个接口
解析:java类是单继承的。 java接口可以多继承。 不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时又有一个D方法,A如何决定该继承那一个呢? 但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口
9 . int i=5;
int s=(i++)+(++i)+(i–)+(–i);
s=( )//s 的值是什么?
正确答案: E
A 28
B 25
C 21
D 26
E 24
F 23
解析: 5+7+7+5=24
10 .You have the following code.Which numbers will cause “Test2” to be printed?
switch (x)
{
case 1: System.out.println("Test1");
case 2:
case 3:
System.out.println("Test2");
break;
default:
System.out.println("Test3");
break;
}
正确答案: B C D
A 0
B 1
C 2
D 3
E 4
解析:case 1和case 2后都没有break语句,故都会执行到打印Test2的语句
习题十五
1 .在结构化的程序设计中,模块划分的原则是()
正确答案: D
A 各模块硬包括尽量多的功能
B 各模块的规划应尽量大
C 各模块之间的联系尽量紧密
D 模块内具有高内聚度,模块间具有低耦合度
解析:高类聚就是类的内部操作细节自己完成,不允许外部干涉 低耦合是仅暴露少量的方法给外部使用
2 .Which is not Java primitive types?
正确答案: B
A short
B Boolean
C byte
D float
解析: java规定类名首字母必须大写,这里可以直观的看出来Boolean是一个引用类型,不是基本数据类型。
java中的基本数据类型都对应一个引用类型,如Float是float的引用类型,Integer是int的引用类型
3 . 假设有以下代码
String s = "hello";
String t = "hello";
char c[] = {'h', 'e', 'l', 'l', 'o'};
下列选项中返回false的语句是:
正确答案: B
A s.equals(t);
B t.equals©;
C s==t;
D t.equals(new String (“hello”));
解析:==是比较两个内存地址是否相同,相同为true,不相同为false;
在字符串缓冲池中,若已有字符串,则直接赋值时不再新创建一个字符串,如果是new 关键字,则新创建一个不同的字符串。
String类的equals被重新复写,只要字符串相等,则返回true。
4 .有如下一段代码,请选择其运行结果()
public class StringDemo{
private static final String MESSAGE="taobao";
public static void main(String [] args) {
String a ="tao"+"bao";
String b="tao";
String c="bao";
System.out.println(a==MESSAGE);
System.out.println((b+c)==MESSAGE);
}
}
正确答案: C
A true true
B false false
C true false
D false true
解析:要注意两个问题:
1,字符串在java中存储在字符串常量区中
2,判断的是对象引用是否是同一个引用,判断字符串相等要用equals方法
首先判断aMESSAGE 同一份字符串常量在内存中只有一份,因此是同一地址,返回true
再次比较(b+c)==MESSAGE 这相当于 new String(b+c)==MESSAGE 这里new了一个String对象,所以返回false
5 . 已知 boolean result = false,则下面哪个选项是合法的:
正确答案: B D
A result=1
B result=true;
C if(result!=0) {//so something…}
D if(result) {//do something…}
解析: 1、boolean类型只有两个直接量值:true和false.
2、除成员变量会有默认初始值外,其他变量必须在第一次使用之前初始化
boolean类型的默认值是false;
其余的7种基本类型默认值:
byte是 (byte)0;
short是 (short)0;
int是 0;
long是 0L;
float 是0.0f;
double 是0.0d;
char是 \u0000.
String是null.
6 . 下面哪几个函数 public void example(){…} 的重载函数?()
正确答案: A D
A public void example(int m){…}
B public int example(){…}
C public void example2(){…}
D public int example(int m,float f){…}
7 .与InputStream流相对应的Java系统的“标准输入对象”是()
正确答案: A
A System.in
B System.out
C System.err
D System.exit()
解析:A.标准输入 B.标准输出 C.错误输出 D.结束程序
8 .欲定义类字段或类方法(静态方法),应该使用下列哪一个修饰符修饰()
正确答案: B
A public
B static
C protected
D synchronized
解析:A、 public可以修饰类,数据成员,构造方法,方法成员。被public修饰的成员 ,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。
B、 static用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。
C、 private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部 类,不考虑内部类)。被private修饰的成员,只能在定义它们的类中使用,在 其他类中不能调用。
D、 synchronized可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。
9 . 执行完以下代码 int [ ] x = new int[10] ;后,以下哪项说明是正确的( )
正确答案: A
A x[9]为0
B x[9]未定义
C x[10]为0
D x[0]为空
解析:
数组引用类型的变量的默认值为 null。当数组变量的实例后,如果没有没有显示的为每个元素赋值,Java 就会把该数组的所有元素初始化为其相应类型的默认值。
int型的默认值为0
10 .关于下面的程序Test.java说法正确的是( )。
public class Test {
static String x="1";
static int y=1;
public static void main(String args[]) {
static int z=2;
System.out.println(x+y+z);
}
}
正确答案: D
A 3
B 112
C 13
D 程序有编译错误
解析:被static修饰的变量称为静态变量,静态变量属于整个类,而局部变量属于方法,只在该方法内有效,所以static不能修饰局部变量
习题十六
1 . 设A为已知定义的类名,下列声明A类的对象a的语句( )
正确答案: D
A float A a
B public a=A()
C A a=new int ()
D A a=new A()
2 .
class Foo {
final int i;
int j;
public void doSomething() {
System.out.println(++j + i);
}
}
的输出是?
正确答案: D
A 0
B 1
C 2
D 不能执行,因为编译有错
解析: final作为对象成员存在时,必须初始化;但是,如果不初始化,也可以在类的构造函数中初始因为java允许将数据成员声明为final,却不赋初值。但是,blank finals必须在使用之前初始化,且必须在构造函数中初始化
3 .下列的哪个选项可以正确用以表示八进制值8?()
正确答案: D
A 0×8
B 0×10
C 08
D 010
解析:八进制,以8为基数的算法,逢8进1.所以8在八进制就是010,前面那个0是为了和十进制区分用的,也叫转译符。
4 . 在程序代码中写的注释太多,会使编译后的程序尺寸变大。
正确答案: B
A 对
B 错
解析:注释是给人看的,不是给机器看的
5 .面向对象的三个基本元素是什么?
正确答案: A B D
A 封装
B 继承
C 重载
D 多态
解析:考察面向对象的特点:封装,继承,多态
6 . 代码
System.out.println(10%3*2);
将打印?
正确答案: B
A 1
B 2
C 4
D 6
解析:%和*是同一个优先级,从左到右运算
7 . 高优先级的线程比低优先级的线程运行得更快。
正确答案: B
A 对
B 错
解析: 高优先级的线程与低优先级 的线程只是运行的优先级,扯不到速度上
8 . 关于下面程序 ThisTest .java 运行结果 说法正确的是 : ( )
public class ThisTest {
public static void main(String args[]) {
String x="7";
int y = 2;
int z=2;
System.out.println(x+y+z);
}
}
正确答案: B
A 11
B 722
C 22
D 程序有编译错误
解析:
+号两边如果有一边为字符类型 则为字符串连接
如果变为y+z+x 则等价于(y+z)+x 输出47
9 . 在 Java 中,属于整数类型变量的是()
正确答案: C
A single
B double
C byte
D char
解析: Java中的四类八种基本数据类型
第一类:整数类型 byte short int long
第二类:浮点型 float double
第三类:逻辑型 boolean(它只有两个值可取true false)
第四类:字符型 char
10 . 以下哪个不属于JVM堆内存中的区域()?
正确答案: B
A survivor区
B 常量池
C eden区
D old区
解析: jvm堆分为:新生代(一般是一个Eden区,两个Survivor区),老年代(old区)。
常量池属于 PermGen(方法区)
习题十七
1 .关键字()表明一个对象或变量的引用在初始化后不能被修改。
正确答案: B
A private
B final
C static
D 没有这种关键字
解析:final修饰的变量内容是不能修改的,如果final修饰一个对象的引用,那么指的是这个对象的地址值是无法改变的,对象的内容还是可以修改的。如果final修饰一个普通变量的话,就是变量的值无法修改。综上,final修饰变量的本质就是:修饰的变量值(地址或内容)无法改变。
2 .下列说法正确的是
正确答案: B
A 在类方法中可用this来调用本类的类方法
B 在类方法中调用本类的类方法可直接调用
C 在类方法中只能调用本类的类方法
D 在类方法中绝对不能调用实例方法
解析:在类方法中调用本类的类方法可直接调用。 实例方法也叫做对象方法。
类方法是属于整个类的,而实例方法是属于类的某个对象的。
由于类方法是属于整个类的,并不属于类的哪个对象,所以类方法的方法体中不能有与类的对象有关的内容。即类方法体有如下限制:
(1) 类方法中不能引用对象变量;
(2) 类方法中不能调用类的对象方法;
(3) 在类方法中不能使用super、this关键字。
(4)类方法不能被覆盖。
如果违反这些限制,就会导致程序编译错误。
与类方法相比,对象方法几乎没有什么限制:
(1) 对象方法中可以引用对象变量,也可以引用类变量;
(2) 对象方法中可以调用类方法;
(3) 对象方法中可以使用super、this关键字。
3 . JDK中提供的java、javac、jar等开发工具也是用Java编写的。
正确答案: A
A 对
B 错
解析:下载OpenJDK的源码,可以看到java,javac这些命令都是用java写的,可以导入eclipse单独运行。
4 .以下声明合法的是
正确答案: B
A default String s
B public final static native int w( )
C abstract double d
D abstract final double hyperbolicCosine( )
解析: A:java的访问权限有public、protected、private和default的,default不能修饰变量
C:普通变量不能用abstract修饰,abstract一般修饰方法和类
D:被定义为abstract的类需要被子类继承,但是被修饰为final的类是不能被继承和改写的
5 .String与StringBuffer的区别。
正确答案: A B
A String是不可变的对象,StringBuffer是可以再编辑的
B 字符串是常量,StringBuffer是变量
C String是可变的对象,StringBuffer是不可以再编辑的
D 以上说法都不正确
6 . 类Car里面有个方法run(),如果直接用Car.run(),则方法run前面必须用的关键词是? ( )
正确答案: D
A class
B final
C public
D static
解析:被sataic声明的为静态方法,可以直接通过类名调用而不需要通过对象调用。
7 . 下列哪种说法是正确的?
正确答案: C
A 实例方法可直接调用超类的实例方法
B 实例方法可直接调用超类的类方法
C 实例方法可直接调用本类的类方法
D 实例方法可直接调用其他类的实例方法
解析: a.实例方法可以调用超类公有实例方法
b.实例方法可以直接调用超类的公有类方法
d.实例方法可以通过类名调用其他类的类方法
8 . 不考虑反射,String类型变量所指向内存空间中的内容是不能被改变的 。 ( )
正确答案: A
A 正确
B 错误
解析:String类不可变,指的是String对象内容不可变,因为’String对象存在常量池中,而String的引用是可以可变,可以为String引用赋予新的对象字符串。
9 .下面有关java final的基本规则,描述错误的是?
正确答案: B
A final修饰的类不能被继承
B final修饰的成员变量只允许赋值一次,且只能在类方法赋值
C final修饰的局部变量即为常量,只能赋值一次。
D final修饰的方法不允许被子类覆盖
解析: final修饰的成员变量为基本数据类型是,在赋值之后无法改变。当final修饰的成员变量为引用数据类型时,在赋值后其指向地址无法改变,但是对象内容还是可以改变的。
final修饰的成员变量在赋值时可以有三种方式。1、在声明时直接赋值。2、在构造器中赋值。3、在初始代码块中进行赋值。
10 .下列说法正确的是()
正确答案: B
A 在类方法中可用this来调用本类的类方法
B 在类方法中调用本类的类方法时可直接调用
C 在类方法中只能调用本类中的类方法
D 在类方法中绝对不能调用实例方法
解析:类的方法就是指类中用static 修饰的方法(非static 为实例方法),比如main 方法,那么可以以main 方法为例,可直接调用其他类方法,必须通过实例调用实例方法,this 关键字不是这么用的
习题十八
1 .关于Float,下列说法错误的是()
正确答案: C
A Float是一个类
B Float在java.lang包中
C Float a=1.0是正确的赋值方法
D Float a= new Float(1.0)是正确的赋值方法
解析:Float是类,float不是类.
查看JDK源码就可以发现Byte,Character,Short,Integer,Long,Float,Double,Boolean都在java.lang包中.
Float正确复制方式是Float f=1.0f,若不加f会被识别成double型,double无法向float隐式转换.
Float a= new Float(1.0)是正确的赋值方法,但是在1.5及以上版本引入自动装箱拆箱后,会提示这是不必要的装箱的警告,通常直接使用Float f=1.0f.
2 . 下列代码的输出结果是_____
boolean b=true?false:true==true?false:true;
System.out.println(b);
正确答案: B
A true
B false
C null
D 空字符串
解析: == 优先级高于 三目运算符,先判断 true == true,此时返回为 true,
这时表达式为 boolean b = true?false:true?false:true
此时三目运算符从右向左执行,true?false:true,返回false
这时表达式为 boolean b = true?false:false;
结果为:boolean b = false ;
3 . 在jdk1.5之后,下列 java 程序输出结果为______。
int i=0;
Integer j = new Integer(0);
System.out.println(i==j);
System.out.println(j.equals(i));
正确答案: B
A true,false
B true,true
C false,true
D false,false
E 对于不同的环境结果不同
F 程序无法执行
解析:本题是一个自动拆装箱的考题(自动拆装箱JDK需在1.5上),下面的讨论都不针对新开辟对象的情况:
1、基本型和基本型封装型进行“”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,因此Integer(0)会自动拆箱为int类型再进行比较,显然返回true;
2、两个Integer类型进行“”比较,如果其值在-128至127,那么返回true,否则返回false, 这跟Integer.valueOf()的缓冲对象有关,这里不进行赘述。
3、两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true
4、基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行3中的比较。
4 .下列运算符合法的是( )
正确答案: A
A &&
B <>
C if
D :=
解析:java 中没有<> := 这种运算符, if else不算运算符,因此选a
5 .若有定义:byte[]x={11,22,33,﹣66};其中0≤k≤3,则对x数组元素错误的引用是()
正确答案: C
A x[5-3]
B x[k]
C x[k+5]
D x[0]
解析:下标越界问题:数组中有4个元素,小标范围为0~3
A: x[5-3],小标为2 √
B: x[k], k的范围0~3 √
C: x[k+5], 小标范围为5~8 越界×
D: x[0], 小标为0 √
6 .在 Java 中,存放字符串常量的对象属于( )类对象。
正确答案: B
A Character
B String
C StringBuffer
D Vector
解析:生成字符串的两个类String和StringBuffer中,前者生成的字符串是不变字符串,不能直接对它的内容进行修改,而后者生成的字符串是可变的,可以对其内容进行修改。而Character类是对字符类型的类封装。Vector类是Java语言提供给用户的一种通用类,是一种链表结构的类型。
7 .如果一个方法或变量是"private"访问级别,那么它的访问范围是:
正确答案: D
A 在当前类,或者子类中
B 在当前类或者它的父类中
C 在当前类,或者它所有的父类中
D 在当前类中
8 . 关于Java语言中的final关键字的使用,下列说法正确的是()
正确答案: C
A 在使用final关键字定义的方法里面使用final关键字定义变量。
B 使用final关键字定义变量,必须在变量定义的同时给定变量的具体数值,完成变量初始化。
C final关键字可以用来修饰方法,表明此方法不可以被子类重写。
D 使用final关键字定义变量,必须同时使用static关键字。
解析:
A 选项在 final 定义的方法里,不是必须要用 final 定义变量。
B final 定义的变量,可以在不是必须要在定义的同时完成初始化,也可以在构造方法中完成初始化。
C 正确,final修饰方法,不能被子类重写,但是可以被重载。
D final 定义变量,可以用 static 也可以不用。
9 .
public interface IService {
String NAME="default";
}
与上面等价表示是哪一项()?
正确答案: D
A public String NAME=”default”;
B public static String NAME=”default”;
C private String NAME=”default”;
D public static final String NAME=”default”;
解析:
为什么是public:因为接口必然是要被实现的,如果不是public,这个属性就没有意义了;
为什么是static:因为如果不是static,那么由于每个类可以继承多个接口,那就会出现重名的情况;
为什么是final:这是为了体现java的开闭原则,因为接口是一种模板,既然是模板,那就对修改关闭,对扩展开放。
10 .Java对象的初始化方式有( )
正确答案: A B C
A 初始化块
B 构造器
C 定义变量时指定初始化值
D 其它各项都不对
习题十九
1 .Consider the following code:
String s=null;
Which code fragments cause an object of type NullPointerException to be thrown?
正确答案: A C
A if((s!=null)&(s.length()>0))
B if((s!=null)&&(s.length()>0))
C if((s==null)|(s.length()==0))
D if((s==null)||(s.length()==0))
解析:s为null,因此只要调用了s.length()都会抛出空指针异常。因此这个题目就是考察if语句的后半部分会不会执行。
A,单个与操作的符号& 用在整数上是按位与,用在布尔型变量上跟&&功能类似,但是区别是无论前面是否为真,后面必定执行,因此抛出异常
B,与操作,前半部分判断为假,后面不再执行
C,这里跟 & 和&& 的区别类似,后面必定执行,因此抛出异常
D,或语句,前面为真,整个结果必定为真,后面不执行
2 .Continue语句跳出整个循环.
正确答案: B
A 正确
B 错误
解析: continue是结束本次循环,本次循环中continue下面代码不再执行,直接进入下次循环。
break,直接跳出当前循环。
3 . 下列不属于类及类成员的访问控制符是:( )
正确答案: C
A public
B private
C static
D protected
解析:3个访问控制符:private public protected 4个访问控制级别:private 4 . 下面语句正确的是() 正确答案: D A x+1=5 B i++=1 C a++b=1 D x+=1 解析:赋值运算符左侧必须为变量 5 .高优先级的线程比低优先级的线程运行得更快。() 正确答案: B A 正确 B 错误 解析:线程运行速度与线程的优先级无关。 6 .Java中只有整型才能使用的运算符为? A * B / C % D + 解析:只有%取余操作,只适用于整型 7 .下列程序段的输出结果是:( ) 正确答案: B A true B false C 1 D 0 解析: 题中符号的优先级排序是:’>’,’<’,’&&’,’||’。 8 .下列代码的执行结果是() 正确答案: B A a=10 t.a=3 B a=11 t.a=2 C a=12 t.a=1 D a=11 t.a=1 解析:值为1的a属于类变量也叫作成员变量,值为10的a是局部变量 首先a++时就近原则,用局部变量10来加,Text.a直接用类名调用成员变量的情况,只能是static 修饰的成员变量1来加,然后又实例化了对象,在输出中第一个a= 用就近原则输出11,第二个t.a 对象只能调用类变量输出2 9 . Java 源程序文件的扩展名为() A .java B .class C .exe D .jar 解析: .class 编译后的Java文件 10 . 访问权限控制从最大权限到最小权限依次为:public、 包访问权限、protected和private 。( ) 正确答案: B A 正确 B 错误 解析:public>protected>默认(包访问权限)>private 习题二十 正确答案: D A abstract final class HI{} B abstract private move(){} C protected private number; D public abstract class Car{} 解析: A只能有final和abstract的一个,因为final是最终类,不能继承,必须可以创建实例,而abstract是抽象类,只能继承,不有实例。冲突了,所以不对。 2 . 定义类中成员变量时不可能用到的修饰是() 正确答案: B A final B void C protected D static 解析:void是修饰方法的,没有返回值,final是修饰常量的,protected是保护的,static是静态的 3 . 编译 java 源程序文件将产生响应的字节码文件,这些字节码文件的扩展名为 正确答案: A A .class B .java C .html D .exe 解析: 编译java文件:输入javac xxx.java回车,编译会生成.class文件 运行java文件:java xxx.class; 4 .在基本JAVA类型中,如果不明确指定,整数型的默认是什么类型?带小数的默认是什么类型? A int float B int double C long float D long double 解析:整数类型 默认为 int,带小数的默认为 double 5 .以下程序的运行结果是() 正确答案: B A 666 B 667 C 677 D 676 解析:a++ 表示先调用,后++ 6 . 有以下程序片段,下列哪个选项不能插入到第一行 。( )。 正确答案: A A public class MainClass{ } B package mine; C class ANotherClass{ } D import java.util.*; 解析:Java一个源程序只能有一个public类存在,且类名与文件名相同。Java程序是从main方法开始执行的,public为类加载器提供入口,然后找到public类中的main方法开始执行。如果存在多个public类,程序将不知道该从哪里执行。 7 . 下列运算符中优先级最高的是? 正确答案: B A < B + C && D != 解析: 正确答案: C A 面向对象 B 多线程 C 平台无关 D 网络编程 解析:java的“一次编写,到处运行”的跨平台性是独有的特点~ 9 . 下列代码片段中,存在编译错误的语句是() A 语句2 B 语句1 C 语句3 D 语句4 解析: Java表达式转型规则由低到高转换: 2、如果有一个操作数是long型,计算结果是long型; 3、如果有一个操作数是float型,计算结果是float型; 习题二十一 1 .代码String str=”123456a”;int i=Integer.parseInt(str);会报异常的是() 正确答案: B A java.lang.NullPoninterException B java.lang.NumberFormatException C java.lang.RuntimeException D java.lang.ArrayindexOutOfBoundsException 解析:非纯数字的字符串转化为Integer对象会报数字格式异常。 2 .设有下面一段代码: 问:类 Person 和类 Student 的关系是( )。 正确答案: B A 包含关系 B 继承关系 C 关联关系 D 无关系,上述类定义有语法错误 3 .Java中所有类的父类是( )。 正确答案: D A Father B Dang C Exception D Object 解析:D,java中Object是所有类的父亲,所有类的对象都是Class的实例。 4 . Java 语言中,负责并发管理的机制是( ) A 垃圾回收 B 虚拟机 C 代码安全 D 多线程 解析:选项A,Java语言中,垃圾回收机制对系统中不使用的内存进行回收,从而使程序员从繁忙的内存管理中解放出来。 5 . 在 java 中 , 一个类() 正确答案: B A 可以继承多个类 B 可以实现多个接口 C 在一个程序中只能有一个子类 D 只能实现一个接口 解析:B Java单继承,多实现:一个类可以同时实现多个接口,但是只能继承自一个类,但它可以被多个类继承,也就是说一个类只有一个直接父类,但是可以有多个子类 6 .下列程序段执行后t3的结果是()。 正确答案: A A 2 B 4 C 5 D 6 解析:这是运算优先符。先计算t1+t2 =5 然后t1<t2为真 然后再是三目运算符 真取前面假取后面。所以答案为2 7 . 以下关于Object类的说法正确的是() A Java中所有的类都直接或间接继承自Object,无论是否明确的指明,无论其是否是抽象类。 B Java中的接口(interface)也继承了Object类 C 利用“==”比较两个对象时,Java调用继承自Object的equals方法,判断是否相等。 D 如果类的定义中没有重新定义toString()方法,则该类创建的对象无法使用toStrig()方法。 8 .关于类的叙述正确的是()。 正确答案: B A 在类中定义的变量称为类的成员变量,在别的类中可以直接使用 B 局部变量的作用范围仅仅在定义它的方法内,或者是在定义它的控制流块中 C 使用别的类的方法仅仅需要引用方法的名字即可 D 只要没有定义不带参数的构造函数,JVM都会为类生成一个默认构造函数 解析: A 在类中定义的变量称为类的成员变量,在别的类中不可以直接使用局部变量的 9 .关于Java和C/C++的比较,下列哪个描述是错误的? 正确答案: C D A Java不支持指针,C/C++支持 B Java程序不需要显式地关心内存释放,而C/C++需要 C Java和C++一样,是纯编译型语言,因此它们的class都是在编译时静态联编(static binding)的 D Java数组、字符串不可能溢出,C/C++数组、字符串则有可能溢出边界 解析:C,java不完全算是编译型语言,他编译的字节码文件运行时是解释执行的,其次,java和C++的类也不都完全是静态绑定的,比如C++的虚函数,java的父类引用子类对象等情况。 10 .下列有关java构造函数叙述正确的是() 正确答案: C D A 构造器的返回值为void类型 B 如果一个源文件中有多个类,那么构造器必须与公共类同名 C 构造器可以有0个,1个或一个以上的参数 D 每个类可以有一个以上的构造器 解析: 构造方法是一种特殊的方法,具有以下特点。 习题二十二 1 . 覆盖(重写)与重载的关系是()。 正确答案: A A 覆盖(重写)只有出现在父类与子类之间,而重载可以出现在同一个类中 B 覆盖(重写)方法可以有不同的方法名,而重载方法必须是相同的方法名 C final修饰的方法可以被覆盖(重写),但不能被重载 D 覆盖(重写)与重载是同一回事 解析:首先,重载和重写都是多态的一种体现方式。重载是编译期间的活动,重写是运行期间的活动。 2 .下列程序的输出结果是什么? 正确答案: A true true true true 解析:equal:是用来比较两个对象内部的内容是否相等的。 3 .编程语言JavaScript源自Java,其功能是Java SE的子集() 正确答案: B A 正确 B 错误 解析: A PHP,Python B JSP,servlet C Java,Javascript D C,C++ 5 .Java的跨平台特性是指它的源代码可以在多个平台运行。() 正确答案: B A 正确 B 错误 解析:我们编译好的文件是以.java后缀保存的,编译器会自动帮我们生成一个标准的.class字节码文件,JVM运行该文件。JVM也是一个软件,不同的系统平台JVM不同,但都可以实现标准的.class字节码文件。 6 .以下关于java封装的描述中,正确的是: 正确答案: A A 封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性 B 封装的意义不大,因此在编码中尽量不要使用 C 如果子类继承父类,对于父类中进行封装的方法,子类仍然可以直接调用 D 只能对一个类中的方法进行封装,不能对属性进行封装 解析: 7 .以下对继承的描述错误的是() 正确答案: A A Java中的继承允许一个子类继承多个父类 B 父类更具有通用性,子类更具体 C Java中的继承存在着传递性 D 当实例化子类时会递归调用父类中的构造方法 解析:Java只能继承一个父类,但可以实现多个接口。 8 . 将类的成员的访问权限设置为默认的,则该成员能被( ) 正确答案: A A 同一包中的类访问 B 其它包中的类访问 C 所有的类访问 D 所有的类的子类访问 解析: 9 . 下列描述中,错误的是( ) A java要求编程者管理内存 B java的安全性体现在多个层次上 C java中没有指针机制 D java有多线程机制 解析:java与C艹很大的一点区别就是java是不需要使用者关注内存分配以及管理的 10 . 现有一变量声明为 boolean aa; 下面赋值语句中正确的是 ( ) 正确答案: A A aa=false; B aa=False; C aa=“true”; D aa=0; 解析:boolean的值要不是true,要不就是false。
正确答案: Cpublic void complicatedexpression_r(){
int x=20, y=30;
boolean b;
b = x > 50 && y > 60 || x > 50 && y < -60 || x < -50 && y > 60 || x < -50 && y < -60;
System.out.println(b);
}
即 b=(x>50&&y>60)||(x>50&&y<-60)||(x<-50&&y>60)||(x<-50&&y<-60);
x>50结果为false,x<-50结果为false,所以括号中的表达式结果都为false,四个false或的结果false。 public class Test {
public static int a = 1;
public static void main(String[] args) {
int a = 10;
a++; Test.a++;
Test t=new Test();
System.out.println("a=" + a + " t.a=" + t.a);
}
}
正确答案: A
.java是未编译的程序
.jsp是页面程序
.xml配置程序
.jar是.calss的集合
1 . 下列哪个类的声明是正确的?
B是抽象方法,不能有方法体。所以末尾不是{}而是;才对
C中 访问修饰符只能有一个,而且对象没有类型。
D正确,这是抽象类。
写好的java文件后缀名为xxx.java
正确答案: Bpublic class Increment
{
public static void main(String args[])
{
int a;
a = 6;
System.out.print(a);
System.out.print(a++);
System.out.print(a);
}
}
public class A{
//do sth
}
注意,内部类可以是public的,因为内部类是作为外部类的成员存在的。
8 . Java语言与其它语言相比,独有的特点是( )byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(b1+b2); /*语句1*/
b6=b4+b5; /*语句2*/
b8=(b1+b4); /*语句3*/
b7=(b2+b5); /*语句4*/
System.out.println(b3+b6);
正确答案: B C D
1、所有的byte,short,char型的值将被提升为int型;
4、如果有一个操作数是double型,计算结果是double型;
5、被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化。
--------------解析--------------
语句1错误:b3=(b1+b2);自动转为int,所以正确写法为b3=(byte)(b1+b2);或者将b3定义为int;
语句2正确:b6=b4+b5;b4、b5为final类型,不会自动提升,所以和的类型视左边变量类型而定,即b6可以是任意数值类型;
语句3错误:b8=(b1+b4);虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(byte)(b1+b4);
语句4错误:b7=(b2+b5); 同上。同时注意b7是final修饰,即只可赋值一次,便不可再改变。 class Student extends Person {
long id; // 身份证号
int score; // 入学总分
String name; // 姓名
int getScore(){
return score;
}
}
正确答案: D
选项B,Java编写好的程序首先由编译器转换为标准字节代码,然后由虚拟机执行。虚拟机把字节代码程序与各操作系统和硬件分开,使Java程序独立于平台。
选项C,Java的代码安全检测体现在多个层次上,在编译层、解释层、平台层分别作不同的安全检查。
选项D,多线程是Java程序的并发机制,它能同步共享数、处理不同的事件。 int t1=2, t2=3, t3;
t3=t1
正确答案: A
C 使用别的类的方法需要通过该类的对象引用方法的名字
D 只要没有定义任何构造函数,JVM都会为类生成一个默认构造函数
D,java也可以数组溢出,溢出是会抛出异常,也就是ArrayIndexOutOfBoundsException
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(5)构造方法可以重载,以参数的个数,类型,顺序。
其次,重载是在一个类中定义相同的名字的方法,方法的参数列表或者类型要互相不同,但是返回值类型不作为是否重载的标准,可以修改可见性;
重写是不同的,要求子类重写基类的方法时要与父类方法具有相同的参数类型和返回值,可见性需要大于等于基类的方法public class Test1{
public static void main(String args[]){
String a="1234";
String b="1234";
String c = new String("1234");
System.out.println(a==b);
System.out.println(a==c);
System.out.println(a.equals(c));
}
}
false
true
true
false
false
false
true
true
==:是用来判断两个对象的地址是否相同,即是否是指相同一个对象。
4 .蔺相如,司马相如;魏无忌,长孙无忌。下列哪一组对应关系与此类似()
正确答案: C 你的答案: 空 (错误)
封装主要是隐藏内部代码;
继承主要是复用现有代码;
多态主要是改写对象行为。
public:可以被所有其他类所访问;
protected:自身、子类及同一个包中类可以访问;
default:同一包中的类可以访问;
private:只能被自己访问和修改。
public>protcted>default>priavte
正确答案: A