文章目录
1.JAVA开发环境
单选题
(单选题)在Java中,以下描述错误的是( )
A…class是源文件
B…java是编译前的源文件
C…class是编译后的文件
D.Java程序需编译后方可运行
【正确答案】A
【答案解析】此题目考查的是Java程序的开发过程。Java程序开发需要经过三个步骤:编写(.java)、编译(.class)、运行。编写的源程序为.java后缀的,编译后为.class的字节码文件,因此选项B、C是正确的,A是错误的。Java文件都需要进行编译,编译后的.class文件可以"一次编译、多次运行",即体现了Java的特点"Write Once,Run more"。因此D是正确的选项。
(单选题)Java是从()语言改进重新设计
A.Ada
B.C++
C.Pasacal
D.BASIC
【正确答案】B
【答案解析】ADA:美国军方为了整合不同语言开发的系统而发明的一种语言,最大的特点是实时性,在ADA95中已加入面向对象内容. Pascal:为提倡结构化编程而发明的语言,结构化特色非常明显,函数体内允许任意层次的嵌套. BASIC:为了让大学生简单容易控制电脑开发的语言,特点是简单易懂,且可以用解释和编译两种方法执行. 3
(单选题)在控制台运行一个 Java 程序 TestDemo . class ,使用的命令正确的是( )
A.java TestDemo. class
B.javac TestDemo. class
C.java TestDemo
D.javac TestDemo
【正确答案】C
【答案解析】java命令程序执行字节码文件时不能跟文件后缀名 因此C是正确的选项。
(单选题)Java编程语言之父是()
A.James Gosling
B.Abigail
C.Brutus
D.以上选项都不对
【正确答案】A
【答案解析】詹姆斯·高斯林 (JamesGosling,1955年5月19日-,出生于加拿大),软件专家,Java编程语言的共同创始人之一,一般公认他为“Java之父”。
(单选题)Java是从()语言改进重新设计
A.Ada
B.C++
C.Pasacal
D.BASIC
【正确答案】B
【答案解析】ADA: 美国军方为了整合不同语言开发的系统而发明的一种语言,最大的特点是实时性,在ADA95中已加入面向对象内容. Pascal: 为提倡结构化编程而发明的语言,结构化特色非常明显,函数体内允许任意层次的嵌套. BASIC: 为了让大学生简单容易控制电脑开发的语言,特点是简单易懂,且可以用解释和编译两种方法执行.
(单选题)Java编程语言之父是()
A.James Gosling
B.Abigail
C.Brutus
D.以上选项都不对
【正确答案】A
【答案解析】詹姆斯·高斯林 (James Gosling,1955年5月19日-,出生于加拿大),软件专家,Java编程语言的共同创始人之一,一般公认他为“Java之父”。
多选题
(多选题)下列对Java语言的叙述中,正确的是()
A.Java虚拟机解释执行字节码
B.Java的类是对具有相同行为对象的一种抽象
C.Java中的垃圾回收机制是一个系统级的线程
D.JDK的库文件目录是bin
【正确答案】A,B,C
【答案解析】在JDK目录结构中,lib目录下存放的都是库文件,而bin目录下有编译器、解释器和许多工具(如服务器工具、IDL、package工具和jdb等)。
(多选题)下列描述中,哪些符合 Java 语言的特征( )
A.支持跨平台(Windows,Linux,Unix等)
B.GC(自动垃圾回收),提高了代码安全性
C.支持类 C 的指针运算操作
D.不支持与其它语言书写的程序进行通讯
【正确答案】A,B
【答案解析】java语言支持跨平台,没有指针的概念,拥有GC垃圾自动回收机制。
(多选题)下列哪些选项属于Java技术体系()
A.Java Me
B.Java Se
C.Java EE
D.Java Card
【正确答案】A,B,C,D
【答案解析】Java Card、Java Me、Java Se、Java EE都属于Java技术体系
2.JAVA变量
单选题
(单选题)下列的标识符符合Java命名约定的是()
A.package com.Bi.hr
B.public class xyz
C.int I
D.void setCustomerName()
【正确答案】D
【答案解析】包的名字应该都是由小写单词组成。它们全都是小写字母,即便中间的单词亦是如此,所以A选项错误。 类名的第一个字母一定要大写,所以B选项错误; 变量的第一个字母应该为小写,所以C选项错误; 与属性相对应的get、set方法为:set(get)+属性名,属性名第一个字母为大写,所以D选项正确。n
(单选题)在Java语言中,被称为内存分配的运算符是()
A.()
B.[]
C.new
D.==
【正确答案】C
【答案解析】Java语言中,程序为对象动态分配内存。Java中内存分配的运算符是new。
(单选题)在控制台显示消息的语句正确的是( )
A.System.out.println( 欢迎学习java!) ;
B.System.Out.Println( “欢迎学习java!” );
C.system.out.println( “欢迎学习java!” );
D.System.out.println( “欢迎学习java!” );
【正确答案】D
【答案解析】JAVA关键字严格区分大小写,输出内容语句为System.out.println( “XXX” ); 因此D是正确的选项。
多选题
(多选题)下列有关于变量的命名正确的是
A.可以由字母、数字、下划线、”$”组成;
B.首字母能以数字开头
C.首字母不能以数字开头
D.Java大小写敏感,命名变量时需要注意
【正确答案】A,C,D
【答案解析】变量的命名首字母不能是数组开头,其他选项均正确 因此ACD是正确的选项。
(多选题)下列有关变量的声明正确的是
A.a = 100;
B.int number;
C.double d1, d2;
D.int number1, number2;
【正确答案】B,C,D
【答案解析】A选项中的a没有经过声明,未经声明的变量不能使用,B选项是声明一个int型的number变量, C选项同时声明了两个双精度浮点数(小数)变量,D选项同时声明了两个整型变量 因此BCD是正确的选项。
(多选题)下列变量书写正确的是
A.int 3year;
B.int float;
C.int Denis;
D.int cLanguageScor
【正确答案】C,D
【答案解析】此题目考查的是变量的命名规范,A选项以数字开头,B选项与关键字冲突,所以AB均错误,C选项是正常命名,D选项是多个单词组合使用驼峰命名法 因此CD是正确的选项。
(多选题)从下列选项中选择正确的是( )
A.int k=new String(“aa”);
B.String str=new String(“bb”);
C.char c=74;
D.long j=8888;
【正确答案】B,C,D
【答案解析】A选项创建的是String对象,变量k应为String类型。
3.JAVA基本类型
单选题
(单选题)隐式类型转换是按优先关系从低到高的顺序,下列描述正确的顺序为( )
A.char-int-long-float-double
B.int-long-float-double-char
C.long-float-int-double-char
D.以上都不对
【正确答案】A
【答案解析】隐式类型转换规则是: byte→short(char)→int→long→float→double
(单选题)java中char类型的取值范围是()
A.0 … 32767
B.0 … 65535
C.–256 … 255
D.–32768 … 32767
【正确答案】B
【答案解析】在java中,char是一个无符号16位类型,取值范围为0到65535。
(单选题)能够给一个byte型变量赋值的范围是( )。
A. 0~65535
B.(-128)~127
C.(-32, 768)~32, 767
D. (-256)~255
【正确答案】B
【答案解析】Byte的取值范围是(-128)~127。
(单选题)找出下列代码哪行有错误
1.public class HelloWorld{
2. public static void main(String[] args) {
3. double avg1=78.5;
4. int rise=5;
5. int avg2=avg1+rise;
6. System.out.println("考试平均分:"+avg1);
7. System.out.println("调整后的平均分:"+avg2);
8. }
9.}
A.3
B.4
C.5
D.6
【正确答案】C
【答案解析】在 Java 程序中,不同的基本数据类型的数据之间经常需要进行相互转换, 目标类型大于源类型,如 double 类型长度为 8 字节, int 类型为 4 字节,因此 double 类型的变量里直接可以存放 int 类型的数据,但反过来就不可以了 因此C是正确的选项。
(单选题)存储一个24X24点阵的汉字(每个点1bit),需要多少字节( )
A.24
B.48
C.72
D.144
【正确答案】C
【答案解析】24*24/8=72。意思是:24*24的结果是二进制位,而八个二进制位等于 一个字节,所以再除以八是所得的字节数。
(单选题)java语言中int类型数据占用多少位?( )。
A.32
B.20
C.16
D.64
【正确答案】A
【答案解析】Byte类型占8位short类型占16位Int类型占32位long类型占64位
多选题 (共计 3 题,总计 6分)
多选题
(多选题)选择 Java 语言中的基本数据类型( )
A.byte
B.Integer
C.char
D.Boolean
【正确答案】A,C
【答案解析】java中的8种基本数据类型:byte,short,int,long,char,boolean,float,double
(多选题)
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);
下列代码片段中,存在编辑错误的语句是()
A.语句1
B.语句2
C.语句3
D.语句4
【正确答案】A,C,D
【答案解析】语句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修饰,即只可赋值一次,便不可再改变。
(多选题)下面的哪些声明是合法的( )
A.long l = 4990
B.int i = 4L
C.float f =1.1
D.double d = 34.4
【正确答案】A,D
【答案解析】B.4L应该是long类型的写法。C.1.1是double类型,float f=1.1f是正确写法。
4.运算符和表达式
单选题
(单选题)下列程序的运行结果正确的是
int a = 5;
int b = ++a;
System.out.println(“a=”+a);
System.out.println(“b=”+b);
A.a=5,b=5
B.a=6,b=5
C.a=5,b=6
D.a=6,b=6
【正确答案】D
【答案解析】++和—可以出现操作数的左边也可以是右边,此题++出现在左边,让a先执行自增运算,然后将值赋值给变量b 因此D是正确的选项。
(单选题)在字符串前面加上( )符号,则字符串中的转义字符将不被处理。
A.@
B.\
C.#
D.%
【正确答案】B
【答案解析】JAVA中使用""符号进行转移
(单选题)以下表达式那个是不合法的()
A.String x=“Hello”;
int y=9; x+=y;
B.String x=“Hello”;
int y=9;
if(x==y) { }
C.String x=“Hello”;
int y=9; x=x+y;
D.String x=null;
int y=(x!=null)&&(x.length()>0) ? x.length() : 0;
【正确答案】B
【答案解析】java对"+“进行了扩展,不仅可以连接字符串,而且还能将字符串与其它类型数据进行连接,结果是字符串。 若”+“的第一个操作数是字符串,Java会自动将后面的操作数类型转换成字符串类型。 本题选项A中,x+=y即x=x+y,则计算结果x的值为字符串Hello9; 选项C与此类似,故此选项也是正确的; 选项D主要考查的是三目运算符”?:“,即把表达式(x!=null)&&(x.length()>0) ? x.length() : 0的值赋给整型变量y,运行结果y的值是0; 而选项B是因为”=="两边的类型不匹配,无法比较,所以此表达式是错误的。
(单选题)一下运算结果为true的是
A.( 5 > 2 ) && ( false )
B.( false ) || ( 5 < 2 )
C.( true ) && ( 2 < 5 )
D.! ( 2 < 5 )
【正确答案】C
【答案解析】C选项&&运算符左右两侧均为true,因此正确
(单选题)若a为整型变量,a=12,则表达式:a-=2的值为
A.10
B.12
C.14
D.-10
【正确答案】A
【答案解析】此题的运算结果a=12-2,即a=10. 因此A是正确的选项.
(单选题)程序运算输出结果下面正确的是
public class HelloWorld{
public static void main(String[] args) {
int one = 10 ;
int two = 20 ;
two /= one;
System.out.println(two);
}
}
A.20
B.10
C.2
D.0
【正确答案】C
【答案解析】“/=”运算符名字叫做除等于,two/=one等价于two=two/one 因此C是正确的选项。
(单选题)设整型变量a为5,使b不为2的表达式是()
A.b=a%2
B.b=a/2
C.b=a>3?2:1
D.b=6-4
【正确答案】A
【答案解析】首先对于B,除法的结果是保留整数,因此结果b为2。C中使用的是三目表达式,当?之前表达式结果为真的话则取数字2为结果,否则数字1为结果,对于本题5>3 为真,所以b的值为2。D中6-4等于2,所以b为2。取余运算得到的结果是一步计算的余数,因此A中5%2的商是2余数是1,因此b为1。所以本题A是正确选项。
(单选题)表达式3>5?1:0的值是多少
A.0
B.1
C.3
D.5
【正确答案】A
【答案解析】此题目考查的是三目运算符的使用,当条件表达式3>5成立时返回1的值, 当条件表达式3>5不成立时返回0的值 因此A是正确的选项。
(单选题)下面有关于三目运算符的语法格式描述正确的是
A.条件表达式?表达式1:表达式2;
B.条件表达式?条件表达式,表达式1:表达式2;
C.条件表达式!表达式1:表达式2;
D.条件表达式!条件表达式,表达式1:表达式2;
【正确答案】A
【答案解析】此题目考查的是三目运算符的语法格式: 条件表达式?表达式1:表达式2; 因此A是正确的选项。
(单选题)编译运行以下程序后,关于输出结果的说明正确的是( )
publicclass Conditional{
publicstaticvoid main(String args[]){
int x=4;
System.out.println("value is "+ ((x>4) ? 99.9 : 9));
}
}
A.输出结果为:value is 99.99
B.输出结果为:value is 9
C.输出结果为:value is 9.0
D.编译错误
【正确答案】C
【答案解析】三目运算符中:第二个表达式和第三个表达式中如果都为基本数据类型,整个表达式的运算结果由容量高的决定。99.9是double类型而9是int类型, double 容量高。
多选题
(多选题)下列有关算数运算符描述正确的是
A.“/”代表除法运算符
B.“/”代表求余运算符
C.“%”代表除法运算符
D.“%”代表求余运算符
【正确答案】A,D
【答案解析】/代表除法运算符,%代表%求余运算符 因此AD是正确的选项。
(多选题)下列有关逻辑运算符描述正确的是
A.&& 与
B.|| 或
C.! 非
D.^ 异或
【正确答案】A,B,C,D
【答案解析】此题目考查的是对逻辑运算符的掌握,以上选项均正确. 因此ABCD是正确的选
5.分支结构
单选题
(单选题)Java 中关于 if 语句描述错误的是( )
A.if 语句是根据条件判断之后再做处理的一种语法结构
B.关键字 if 后小括号里面条件表达式的值必须为布尔类型
C.if 后小括号里的表达式的值为 false 时,程序需要执行后面大括号里的语句
D.if 语句可以和 else 一起使用
【正确答案】C
【答案解析】if 后小括号里必须是一个条件表达式,结果为布尔值,如果为 true ,则执行后面大括号中的代码,如果为 false,则不执行 因此C是正确选项
(单选题)给定代码:
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;
}
}
第三行将输出什么?
A.value=6
B.value=8
C.value=3
D.value=5
【正确答案】B
【答案解析】没有break,从case 4开始一直执行到最后,j自加3次变成了4,结果返回8
(单选题)下面的方法,当输入为2的时候返回值是多少?()
public static int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
}
A.0
B.2
C.4
D.10
【正确答案】D
【答案解析】注意这里case后面没有加break,所以从case 2开始一直往下运行。 result=0+22;//4 result=4+23;//10
6.循环结构
单选题
(单选题)下面的程序示例中:
int j,k;
for(j=0,k=0;j<=9&&k!=876;j++){
System.out.println("欢迎学习Java");
}
for循环语句执行的最大次数为?
A.8
B.9
C.10
D.0
【正确答案】C
【答案解析】此题目考查的是for循环,
(单选题)下列关于循环说法错误的是( )
A.while 循环先判断后执行,do…while 先执行后判断
B.do…while 循环结束的条件是 while 后的条件成立
C.do…while 循环的循环体至少无条件执行一次
D.for 语句构成的循环可以用其他循环语句替换
【正确答案】B
【答案解析】do…while 循环结束的条件是 while 后的条件不成立 因此B是正确选项
(单选题)下列代码哪行会出错()
1) public void modify() {
2) int i, j, k;
3) i = 100;
4) while ( i > 0 ) {
5) j = i * 2;
6) System.out.println("The value of j is " + j);
7) k = k + 1;
8) i--;
9) }
10) }
A.4
B.6
C.7
D.8
【正确答案】C
【答案解析】变量k没有被初始化
(单选题)选择下面代码的运行结果:( )
public class Test{
public void method(){
for(int i = 0; i < 3; i++){
System.out.print(i);
}
System.out.print(i);
}
}
A.0122
B.0123
C.编译错误
D.没有任何输出
【正确答案】C
【答案解析】i变量的作用范围是整个for循环中。
(单选题)以下for循环的执行次数是( )。
for(int x=0,y=0;(y!=0)&&(x<4);x++);
A.无限次
B.一次也不执行
C.执行四次
D.执行三次
【正确答案】B
【答案解析】(y!=0)&&(x<4)中,&&叫做短路与,如果前面的条件表达式已经为假了,整个条件表达式肯定为假,y!=0是假,所以条件不成立,for循环不执行。
(多选题)已知如下代码:
public class Test{
public static void main(String arg[] ){
int i = 5;
do{
System.out.print(i);
}while(--i>5);
System.out.print(“finished”);
}
}
执行后会输出( )
A.5
B.4
C.6
D.finished
【正确答案】A,D
【答案解析】do?while循环中循环体一定会先执行一次
7.数组
单选题
(单选题)定义一个数组 int[ ] scores = { 1, 2, 3, 4, 5, 6, 7 } ,数组中的 score[3] 指的是
A.1
B.2
C.3
D.4
【正确答案】D
【答案解析】数组下标从 0 开始,因此 score[3] 表示数组中的第 4 个元素 因此D是正切选项
(单选题)下面哪个是正确的( )
A.String temp [] = new String {“a”“b”“c”};
B.String temp [] = {“a”“b”“c”};
C.String temp = {“a”, “b”, “c”};
D.String temp [] = {“a”, “b”, “c”};
【正确答案】D
【答案解析】数组声明初始化时前面的接收变量类型应该是数组类型,需要具有"[]“号, 且数组中每个元素都必须是统一指定类型,并且元素间需要使用”,"号分隔。
(单选题)已知表达式 int m [ ] = {0, 1, 2, 3, 4, 5, 6}; 下面哪个表达式的值与数组下标量总数相等( )
A.m.length()
B.m.length
C.m.length()+1
D.m.length+1
【正确答案】B
【答案解析】数组下标是从零开始的,但是数据下标的总量和数据长度相同。
(单选题)下列数组的初始化正确的是()
A.int[ ] score = new int[ ];
B.int score[ ] = new int[ ] { 34, 90, 87, 54, 24 };
C.int[ ] score = new int[ 4 ] { 90, 12, 34, 77 };
D.int score = { 78, 23, 44, 78 };
【正确答案】B
【答案解析】选项 A 需要指定数组的长度;选项 C 在声明数组的同时赋值时不能指定数组长度;选项 D 声明数组的语法错误,应为int[ ] score={ 78, 23, 44, 78 }; 因此选择 B
(单选题)当编译并运行下面程序时会出现什么结果( )
public class MyAr{
public static void main(String argv[]){
int[] i = new int[5];
System.out.println(i[5]);
}
}
A.编译错误
B.运行错误
C.输出0
D.输出“null”
【正确答案】B
【答案解析】这里会发生运行错误,错误原因是访问数组下标越界了
(单选题)以下代码的执行结果是()
public class Test {
private static float[] f = new float[2];
public static void main(String args[]) {
System.out.println("f[0] = " + f[0]);
}
}
A.f[0] = 0
B.f[0] = 0.0
C.代码不能通过编译
D.程序运行时出错
【正确答案】B
【答案解析】float型数组中的元素都是float,默认初始值是0.0。
(单选题)执行完以下代码 int [ ] x = new int[25];
后,
以下哪项说明是正确的( )
A.x[24]为 0
B.x[24]未定义
C.x[25]为 0
D.x[0]为空
【正确答案】A
【答案解析】x属于引用类型,该引用类型的每一个成员是int类型,默认值为:0
(单选题)对于一个数组int[] number = {314,298,508,123,486,145};
按从小到大的顺序进行插入排序,经过两趟排序后的结果为()
A.{314,298,508,123,145,486}
B.{298,314,508,123,486,145}
C.{298,123,314,508,486,145}
D.{123、298,314,508,486,145}
【正确答案】B
【答案解析】此题为插入排序算法,代码如下: public static void injectionSort(int[] number) { // 第一个元素作为一部分,对后面的部分进行循环 for (int j = 1; j < number.length; j++) { int tmp = number[j]; int i = j - 1; while (tmp < number[i]) { number[i + 1] = number[i]; i–; if (i == -1) break; } number[i + 1] = tmp; } }
多选题
(多选题)下列说法错误的有()
A.数组是一种对象
B.数组属于一种原生类
C.int number=[]={31,23,33,43,35,63}
D.数组的大小可以任意改变
【正确答案】B,C,D
【答案解析】数组不是原生类:int double boolean float byte short long char ,初始化多大就是多大
(多选题)下列选项中创建数组能够编译通过的是( )
A.int[] ia = new int [15];
B.float fa = new float [20];
C.char[] ca = “Some String”;
D.Object oa = new float[20];
【正确答案】A,D
【答案解析】任何类的父类都是 Object,数组属于引用类型,Object oa = new float[20];这种写法相当于父类的引用指向子类的实例。
8.方法
单选题
(单选题)判断方法重载的依据,错误的是:
A.必须在同一个类中
B.方法名不同
C.方法参数的个数、顺序或类型不同
D.与方法的修饰符或返回值没有关系
【正确答案】B
【答案解析】方法重载必须是相同的方法名 因此B是正确的选项。
(单选题)下列有关实参和形参说法正确的是()
A.形参是指在定义方法时参数列表中的参数,实参是指在调用方法时所传入的实际数据
B.形参变量的作用域是在整个类中都可以使用
C.实参只能是字面量值不可以是变量
D.形参不可以用 final 修饰
【正确答案】A
【答案解析】形参是指在定义方法时参数列表中的参数,实参是指在调用方法时所传入的实际数据。 形参是局部变量,作用域在方法体内,出了方法后不可见。 实参可以是字面量常量值也可以是变量,只要是可以在调用方法时传入的数据就是实参。 形参是可以用 final 来修饰的,被 final 修饰的形参被赋初值后值不可以再改变。 所以 A 正确。
(单选题)阅读下列代码;
public class Test{
String s="One World One Dream";
public static void main(String args[]){
System.out.println(s);
}
}
其运行结果是()
A.args
B.One World One Dream
C.s
D.编译错误
【正确答案】D
【答案解析】main方法是程序执行的入口,在本程序中main方法中的语句"System.out.println(s);"无法调用在main方法外声明的变量,所以编译时出错。
(单选题)关于 Java 类中带参数的方法,下列选项中说法错误的是
A.使用带参数的方法分为两步:定义带参数的方法,调用带参数的方法
B.带参数方法的返回值不能为 void
C.带参数方法的参数个数可以为一个或多个
D.带参数方法的参数可以是任意的基本类型数据或引用类型数据
【正确答案】B
【答案解析】带参数方法的返回值可以为 void 因此B是正确的选项。