JavaSE 初级部分第一周测试(java语言概述、java基本语法)

一、单选题
1. Java 语言是一种( ) 语言 。(选择一项)
A.机器
B.汇编
C.面向过程的
D.面向对象的

解析:B
D ; Java语言是一种面向对象的语言,与其他面向对象语言相比,Java利用面向对象技术更彻底,它把所有的Java应用和Applet都看作对象。

2.java 程序的执行过程中用到一套 JDK 工具,其中 javac.exe 指( )。(选择一项)
A.java 语言编译器
B.java 字节码编译器
C.java 文档生成器
D.java 类分解器

解析:A
B;javac.exe将java源文件编译成字节码文件,而java.exe是解释运行字节码文件解释器或运行工具

3.下面关于 JVM 的说法中不正确的是( )。(选择一项)
A.JVM 是 Java Virtual Machine(Java 虚拟机)的缩写,JVM 是一种用于计算设备的规范
B.JVM 是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
C.Java 之所以能够跨平台是因为 JVM 是跨平台的。
D.Java 虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行

解析:B
C;不同的系统下有不同的JVM(JVM是C语言写的),所以JVM不是跨平台的。
JAVA依赖于JVM,JVM给JAVA提供了运行环境,所以JAVA是跨平台的。

4. JDK 是( )。(选择一项)
A.一种全新的程序语言
B.一种程序开发辅助工具
C.一种由 Java 写成的,并支持 Java Applet 的浏览器
D.一种游戏软件

解析:B;

5. Java 语言具有许多优点和特点,下列选项中,哪个反映了 Java 程序并行机制的特点( )。
(选择一项)
A. 安全性
B. 多线程
C. 跨平台
D. 可移植

解析:C
B;安全性是指Java执行多层安全机制,以提供足够的安全保障的特点;跨平台和可移植是指Java一次编写到处运行;多线程反映了Java程序可同时执行多个任务的并行机制特点。

6. 如果 jdk 的安装路径为:c:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用
javac 和 java 命令,需要将环境变量 path 设置为以下哪个选项( )。(选择一项)

A.c:\jdk;
B.c:\jdk\bin;
C.c:\jre\bin;
D.c:\jre;

解析:C
B;path环境必须设为javac.exe和java.exe的上一级目录bin

7. 以下不是 java 关键字的有( )。(选择一项)
A.super B.this C.class D.tree

解析:D;

8. 以下能作为 char 类型的字面值的有( )。(选择一项)
A. “e” B. ’ f’ C.‘123’ D.’\u0012’

解析:D;
A:双引号表示字符串
B:注意此处f前面有一个空格,当仅有f一个字符的时候用单引号编译是可以通过的
C:123是三个字符,属于字符串,用双引号可以编译

9. java 程序中程序运行入口方法 main 的声明正确的是( )。(选择一项)。
A.public static void main(String[] args)
B.static public void main(String args)
C.public void static main(String[] args)
D.public void main(String args[])

解析:A;

10. 以下关于变量的说法错误的是?( )(选择一项)
A.变量名必须是一个有效的标识符
B.变量在定义时可以没有初始值
C.变量一旦被定义,在程序中的任何位置都可以被访问
D.在程序中,可以将一个 byte 类型的值赋给一个 int 类型的变量,不需要特殊声明

解析:C;
要看它的作用域,如果是全局变量,则全局(任何位置)都可访问,如果是局部变量,则只能在它的作用域(函数或过程内部)中才能生效。

11. 以下( )不是合法的变量名。(选择一项)
A.STRING_
B.x3x
C.void
D.de$f

解析:C;
void是关键词

12. 在 Java 中,不属于整数类型变量的是( ) 。(选择一项)
A.double B.long C.int D.Byte

解析:A;
double是浮点型变量

13.下面哪种注释方法能够支持 javadoc 命令( )。(选择一项)
A.//
B.//
C.//
D./**…*/

解析:D;
以“//”开始的是单行注释语句,以“/”开始、“/”结束的是C语言风格的注释语句,在“/
…*/”内的文档注释是自由形式的文本,支持javadoe命令,被javadoc处理,可以建立类的一个外部说明性文件。**

14. Java 源文件和编译后的文件扩展名分别为( ) 。(选择一项)
A..class 和 .java
B..java 和 .class
C..class 和 .class
D..java 和 .java

解析:B;
java源文件扩展名是.java。
java编译后的文件扩展名是.class。
我们编好的Java源程序保存为.java后缀,然后再用javac(Java语言的编译器)进行编译,生成后缀名为.class的字节码文件,保存在和源程序一致的目录下,如源代码有错误,会报告错误,按行指出错误,我们按报告查找并修改错误,重新进行编译,直至生成.class字节码文件为止。

15.下列运算结果默认为 float 的是( )。(选择一项)
A.100/10
B.100*10
C.100F+10
D.100D-10

解析:C;
AB默认为整型int ; D默认为double型

16.用 8 位无符号二进制数能表示的最大十进制数为 ( )(选择一项)
A.127
B.128
C.255
D.256

解析:D
C;最大的8位无符号二进制数是11111111,与之对应的十进制数是1X27+1X26+1X25+1X24+1X23+lX22+1 X21+1X20=255

17.下列数据类型进行运算时,哪一个会发生自动类型提升( )(选择一项)
A.int + int
B.long + long
C.byte + byte
D.double + double

解析:C;byte型的变量在运算期间类型会自动提升为int型

18.下面的语句中,错误的是( )(选择一项)
A.||表示的是逻辑或
B.&&表示的是逻辑与
C.& 表示的是按位与
D.&和&&使用的时候没有任何差别

解析:D;
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。

19.表达式(11+3*8)/4%3 的值是( ) (选择一项)
A.31
B.0
C.1
D.2

解析:D;先算()里的
下表为运算符优先级

JavaSE 初级部分第一周测试(java语言概述、java基本语法)_第1张图片

20.已知 i 为整形变量,关于一元运算 ++i和 i++,下列说法正确的是( )(选择一项)
A.++i 运算将出错
B.在任何情况下运行程序结果都一样
C.在任何情况下运行程序结果都不一样
D.在任何情况下变量 i 的值都增 1

解析:D;
++i 与 i++ 都表示自增,前者表示先自增再取值;后者表示先取值再自增 无论什么情况 i的值都增加1

21.为一个 boolean 类型变量赋值时,可以使用的方式是( )(选择一项)
A.boolean a = 1;
B.boolean a =(9>10);
C.boolean a =”真”;
D.boolean a == false;

解析:B;boolean即java中的基本类型——布尔类型,值只有true和false两种。
A是对int类型的赋值方式。
B中(9>=10)的值是false,因为有关系运算符是用来比较运算,结果只有对(true)与错(false)两种,是boolean类型,所以B正确
C的赋值方式根本不对,既不符合char类型,也不符合String类型
D中 == 是关系运算符,不能用来赋值,如果 == 改成“=”就是正确的
故选B。

22.分析下面的代码,输出正确的是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
double d = 84.54;
d++;
int c = d/2;
}
 }

A.42
B.编译错误,更改为 int c = (int)d/2;
C.43
D.编译错误,更改为 int c = int(d)/2;

解析:B;
d是double类型 , double类型给int类型赋值时,要使用 (int)的方式进行强制转换。

23.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int x=3,y=4;
x=(y<x++)?1:0;
System.out.println(x);
} 
}

A.3
B.4
C.5
D.0

解析 :D;
三目运算符结果为flase x = 0

24. 下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int i=10,j=10;
System.out.println(++i+,+j--);
} }

A.10,10
B.11,9
C.11,10
D.10,10

解析:C;
++i 表示先自增再取值,输出i = 11;
j-- 表示先取值再自减,虽然 j = 9 了,但是输出为 j= 10;

25.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
float a = 4.0f,b=6.0f,c=8.0f;
String s =10.0; 4
System.out.println(a+b+s+c);
} 
}

A.10.010.08.0
B.4.06.010.08.0
C.28.0
D.10.08.010.0

解析:A;
输出中,字符串之前的数进行运算 ,之后进行拼接

26.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int age = 22;
double sum = 5;
sum+= age;
System.out.println(sum);
} }

A.27
B.27.0
C.以上答案都是错误的
D.以上答案都是正确的

解析:B;
sum为浮点型 结果也就为浮点型了

27.在一个 java 原文件中,import, class, package 语句的顺序是( )。(选择一项)
A.import class package
B.class import package
C.package class import
D.package import class

解析:D;按顺序关系从上至下
顺序关系:package > import > class
package 只能有一个
import 可以多个
class 可以有多个,建议一个

28. 下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
System.out.println("Hello\n");
System.out.println("欢迎来到");
System.out.print("\n 蓝桥");
} }

A.Hello 欢迎来到蓝桥
B.Hello
//
//
欢迎来到
//
//
蓝桥
C.Hello 欢迎来到
蓝桥
D.Hello
//欢迎来到蓝桥

解析:B;
print与println只有一个区别:print在本次输出之后不会换行,println在本次输出之后会换行
\n为换行符

29.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int a, b,c;
boolean d,e;
a = b = c = 1;
boolean w;
w = a++ > 1 && ++b >c++;
System.out.println(a +"," + b +"," +c +"," +w);
} }

A.2,2,2,false
B.2,1,1,false
C.2,1,1,true
D.2,2,2,true

解析:B;
&&是逻辑(短路)与的运算符,表示(and):
1.当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
2.如果第一个表达式为false,则不再计算第二个表达式,
此题中 a++ >1 (即 1>1 )为flase ,所以不再执行&& 后的表达式并且w 为flase ,同时 a自增后 a = 2 故选B

30.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int m1 = 10,m2 = 10,m3 = 8;
m3 *= m1+++m2;
System.out.println("m3:"+ m3+);
} }

A.m1:10,m3:168
B.m1:11,m3:168
C.m1:10,m3:160
D.m1:11,m3:160

解析:D;
代码中有m1++的部分 所以 m1 为11;
将m3 = m1+++m2展开为m3 = m3 * (m1++ + m 2 )
m3 = 8
(10 + 10) = 160

31.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int x = 12, y = 14,z;
z = y/x+7;
x = z*z;
System.out

.println(x);
} }
A.12
B.49
C.64
D.以上都不正确

解析:C;

32.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int c = 5;
System.out.print(c--);
System.out.print(c+= c++);
System.out.print(c--);
} }

A.487
B.588
C.598
D.498

解析:B;
1.输出c–为5 c=4
2.输出 c+= c++ 为8 c=8
3.输出 c–=8 c=7

33.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int i = 10,j= 5,temp = 0;
if(i > j){
temp = i;
i = j;
j = temp;
}
System.out.println("i="+ i+ ",j=" +j);
} }

A.i=5,j=10
B.i=10,j=5
C.i=0,j=5
D.i=5,j=0

解析:A ;
交换 i j的值

34.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
boolean b1 = false,b2 = false;
if((b1 = 2> 3) &&(b2 = 5 > 0)){
System.out.println("条件为真");
}
System.out.println("b1="+ b1 +";b2="+ b2);
} }

A.条件为真
b1=false;b2=true
B.b1=false;b2=false
C.条件为真
b1=false;b2=false
D.b1=false;b2=true

解析:B;
(b1 = 2> 3) &&(b2 = 5 > 0)是flase 左面b1 = flase 右面不执行

35.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int num = 46/10;
switch(num){
default:
System.out.println("不及格!");
case 6:
System.out.println("及格!");
break;
case 7:
case 8:
System.out.println("良好!");
break;
case 9:
case 10:
System.out.println("优秀!");
break;
} } }

A.不及格!
及格!
B.不及格! C.不及格!
及格!
良好!
D.不及格!
及格!
良好!
优秀!

解析:A;
在此题中 switch case 中 执行结果为 对应case中的语句及以下所有语句 直到遇到break为止

36.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int a =12,b = 15;
if(a >= 12 ||((b = b>3? 1:2) > 0)){
System.out.println("if");
}else{
System.out.println("else");
} } }

A.if
B.else
C.编译错误
D.以上都不正确

解析:A;
||表示与 a>=12为true 整体就为true 执行 输出if

37.switch 语句中的条件表达式不可以是 Java 中的那一个数据类型( ) (选择一项)
A.byte
B.short
C.Int
D.Long

解析:D;
switch选择结构可以使用的数据类型:1, int;2,char;3,byte;4,short;5,枚举;6, String:对JDK版本有要求,必须为1.7及以上版本

38.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int i = 10%3;
switch(i){
case 0: 
System.out.println("zero ");
break;
case 1:
System.out.print("one,");
case 2:
System.out.print("two,");
default:
System.out.println("default");
} } }

A.zero,one,two,default
B.one,two
C.two,default
D.one,two,default

解析:D;
无break case1 以下的输出语句全执行

39.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
char ch = 'A';
switch(ch +1){
case 65:
System.out.print("A");
case 66:
System.out.print("B");
case 67:
System.out.print("C");
break;
default:
System.out.print("default");
break;
} } }

A.A
B.AB
C.BC
D.ABC

解析:C;
阿斯克码’A’ = 65

40.下面描述中不正确的是( )(选择一项)
A.while 循环可以执行一次,可以执行多次,也可以一次都不执行。
B.do-while 循环可以执行一次,可以执行多次,也可以一次都不执行。
C.while 循环先判断再执行相关的操作。
D.do-while 循环先执行再进行循环条件的判断。

解析:B;
do-while循环至少执行一次

41.下面的说法中不正确的是( )(选择一项)
A.continue 可以用在循环里,也可以用在 switch 语句中。
B.break 能够改变程序的控制流。
C.执行到 continue 时表示跳过循环体中的剩余代码,执行下一次循环。
D.break 表示的是终止循环。

解析:A;continue语句的作用是跳出本次循环,转入执行下一次循环;
所以continue只能在循环结构中 不能在选择分支语句中

42.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int sum = 0;
for(int i = 20;i>0;i--) {
if(i%3 != 0) {
continue;
}
sum += i;
}
System.out.println(sum);
} }

A.45
B.30
C.18
D.63

解析:D;
对1-20中所有能被3整除的数求和(3+6+9+12+15+18)

43.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int i = 0,sum = 1;
do {
if(i++%2 == 0) {
sum += i++;
}
}while(i <4);
System.out.println(sum);
} 
}

A.1 B.2 C.5 D.20

解析:C;
2+3

44.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
int a= 2;
while(a<2) {
System.out.println("执行 while 循环...");
}do {
System.out.println("执行 do-while 循环...");
}while(a<2);
} }

A.执行 do-while 循环…
B.执行 while 循环…
C.执行 while 循环…
执行 do-while 循环…
D.编译错误

解析:A;
do-while 至少执行一次

45.下面程序的执行结果是( )(选择一项)

public class Test {
public static void main(String[ ] args) {
for(int i= 0;i<=4;i++) {
switch(i) {
case 1:
System.out.print('a');
case 2:
System.out.print('b');
break;
case 3:
System.out.print('c');
case 4:
System.out.print('d');
break;
default:
break;
} } } }

A.abbabd
B.abcdabc
C.abbcdd
D.abcdbcd

解析:C

46.不能构成循环的语句是( )。(选择一项)
A.for 语句
B.while 语句
C.switch 语句
D.do while 语句

解析:C

47.Scanner 类在哪个包中? ( )。(选择一项)
A.java.util
B.java.io
C.java.awt
D.java.lang

解析:A

48.在下面的程序中,temp 的最终值是什么?( ) 【北控三兴笔试题】(选择一项)

long temp=(int)3.9;
temp%=2;

A.0 B.1 C.2 D.3

解析:B;
double转换为int是截断,不会四舍五入。(int)3.9转换为3,再赋值给long类型的temp,隐式转换为long类型的3;temp%=2等价于temp=temp%2;3除以2的余数是1

49.System.out.println(“5” + 2);的输出结果应该是( )。(选择一项)
A.52
B.7
C.2
D.5

解析:A;
”5“为字符串 +表示拼接

50.以下关于 break 的说法正确的是( )。(选择一项)
A.只中断最内层的循环
B.只中断最外层的循环
C.借助于标号,可以实现任何外层循环中断
D.只中断某一层的循环

解析:C;

二、代码题
1.商场推出幸运抽奖活动,抽奖规则是 顾客的四位会员卡好的各位数字之和大于 20,则为幸运顾客。
解析:本题考查了算术运算符%,/的使用,使用 Scanner 类接收用户输入以及 Boolean 类型的变量的用法。
首先 先通过控制台获取到输入的会员号,其次通过取余和取整的操作依次获取到每一位的数字
最后对数字进行求和
请手动输入 4 位会员卡号,并显示各个数位之和,并显示是否是幸运客户。

Scanner sc = new Scanner(System.in);
		System.out.println("请输入4位会员卡号:");
		int cardID  = sc.nextInt();
		int qian  = cardID / 1000 ;
		int bai   = cardID % 1000 / 100 ;
		int shi   = cardID % 100  / 10;
		int ge    = cardID % 10;
		int sum = 0;
		sum = qian + bai + shi + ge ;
		System.out.println("各位数之和为:"+sum);
		if(sum > 20) {
			System.out.println("幸运客户");	
		}else{
			System.out.println("不是幸运客户");	
		}
	}

JavaSE 初级部分第一周测试(java语言概述、java基本语法)_第2张图片

2.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

解析: 首先需要仔细观察,找出规律,对于水仙花数问题我们基本上用两种方法解决。

解法1:

public class Test {
public static void main(String[] args) {
int a,sum; //表示 100~999
int i,j,k; //分别表示百位、十位、各位
for(a=100;a<=999;a++){
i=a/100;
j=(a-i*100)/10;
k=a-i*100-j*10;
sum=i*i*i+j*j*j+k*k*k; 
//java 的运算符,立方要这样写,写成 i^3 这样,竟然运算不出来
//如果遇到高次的话可以使用循环算出来
if(sum==a){
System.out.println(sum);
} } } }

解法2:

public class Test {
public static void main(String[] args) {
int sum; 
int i,j,k;//分别表示百位、十位、各位
for(i=1;i<=9;i++){
	for(j=0;j<=9;j++){
		for(k=0;k<=9;k++){
			sum=i*i*i+j*j*j+k*k*k;
			if(i*100+j*10+k==sum){
System.out.println(sum);
} } } } } }

JavaSE 初级部分第一周测试(java语言概述、java基本语法)_第3张图片

你可能感兴趣的:(初级部分阶段性测试题)