括号里面是本人做的答案,括号外面是正确答案
大家有不懂的建议多动手搜一搜,百度是我们的第一老师
如果我哪里有不对的地方,欢迎大家留言指出,我会感谢你的
一、不定项选择题:
- 下面哪些是合法的标识符 ( B )正确答案:BD。
A.class B.$abc
C.1234 D._name
标识符说直白点就是变量,不能用关键字做变量
class 是关键字,不能以数字开头
可以以¥或_或字母开头
- 在Java中,下列哪些说法是正确的 ( AC )。
A.java源文件的扩展名为.java
B.写好的java源程序可以直接运行
C.编写的源程序必须先编译后才能运行
D.程序员可以读懂扩展名为.class的文件
写好的java源程序必须先编译后才能运行,B对C错
.class是编译后的文件,程序员读不懂
- 下面哪些赋值语句是正确的 ( B C )正确答案:ABD。
A.long test = 012;
B.float f = -412F;
C.int other = (int) true;
D.double d = 0x12345678;
A:八进制整型
B:自动转 -412.0f 单精度 浮点数
D:十六进制整数,自动转 双精度浮点数
C:这是语法规则,定了布尔类型不能转int型,那就是不能转,没有什么特别的原因,
所以ABD正确,C错误
- 在Java中,下列语句不能通过编译的有( BD ) 。
A.String s= “join”+ 3;
B.int a= “join”+3;
C.int a= ‘a’+5;
D.float f=5+5.5;
int 可以转为字符串。而字符转不能转为int,string转int可以用Integer.valueOf(“join”)方法,但是可能报 java.lang.NumberFormatException异常
D:5是int,可以转为float,而5.5是double转float需要强制转换,否则会有精度损失
- 下列代码的输出结果是()。boolean b=true?false:true==true?false:true; System.out.println(); ( B )。
A.true
B.false
C.null
D.空字符串
从右往左执行true?false:true结果为false,true == false (true?false:true的结果false)结果为false,boolean b=true?false:false (true==true?false:true的结果为false) 的结果为false
- 下列代码运行的结果是 ( A )正确答案:C。
public static void main(String[] args) {
int x = 4;
int y = 5;
if(x++>4 & ++y>5) {
x++;
}
System.out.println(“x=” + x + “,y=” + y);
}
A.x=4,y=5 B.x=4,y=6
C.x=5,y=6 D.x=6,y=6
if(x++>4 & ++y>5) if里面x++>4 是false,&运算符,只要有一边为假,整个表达式都为假
++y先加后赋值,答案为true,但是true不true不重要了,前面的式子已经为false了
所以没有进入到if条件语句,不会执行x++
所以最后x=5,y=6
- 尝试运行下面的代码会发生什么? ( C )正确答案:B
public class Test {
public static void main(String[] args) {
boolean m = true;
if (m = false) {
System.out.println(“true”);
} else {
System.out.println(“false”);
}
}
}
A.输出字符串”true” B.输出字符串”false”
C.编译时错误 D.运行时错误
= =是比较值是不是一样,=是比较变量内存是否一样,你比较两个变量的值当然要用==,字符串比较使用equals方法
- 编译并运行以下代码将发生什么( B C )正确答案:E
public static void main(String args[]){
char digit = ‘a’;
for (int i = 0; i < 10; i++){
switch (digit){
case ‘x’ : {
int j = 0;
System.out.println(j);
}
default : {
int j = 100;
System.out.println(j);
}
}
}
int i = j;
System.out.println(i);
}
A.输出11次100 B.输出10次100,然后抛出运行期异常
C.编译错误,因为变量i不能在main()方法中被声明2次 D.编译错误,因为变量j不能在main()方法中被声明2次
E.以上都不对
j cannot be resolved to a variable
J 不能解析为变量
- class Demo{
public static int fun(int c) {
return c+=2;
}
public static void main(String[] args) {
int temp = fun(2);
System.out.println(temp);
}
} 打印结果是( B )。
A.2 B.4
C.6 D.8 - 下面哪些函数是public void aMethod(){…}的重载函数 ( A )正确答案:BD
A.void aMethod( ){…} B.public int aMethod(int a, float b){…}
C.public void aMethod (){…} D.public float aMethod (int m){…}
//1. test()方法第一次重载,没有参数
void test() {}
//2. test()方法第二次重载,一个整型参数
void test(int a) {}
//3. test()方法第三次重载,两个整型参数
void test(int a, int b) {}
//4. test()方法第四次重载,一个双精度型参数
double test(double a) {return a;}
- 在java中,关于数组描述正确的是( B D)。
A.数组中的索引下标从1开始 B.存储在数组当中的数据都属于同一数据类型
C.通过数组名.length()能获得数组的长度 D.数组的最大索引下标是数组的长度减1
A下标从0开始
C.length获取数组长度,.length()获取字符串长度
- 下面程序的输出结果是什么 ( C )正确答案:D
int[] arr = new int[10];
System.out.println(arr[0]);
A.编译不通过 B.运行时出错
C.输出null D.输出0
基本数据类型默认是0,引用数据类型是null
- 下面哪个语句正确地声明一个整型的二维数组 ( CD )。
A.int a[][] = new int[][]; B.int b[10][10] = new int[][];
C.int c[][] = new int[10][10]; D.int []d[] = new int[10][10]; - 以下代码输出是 ( A E )正确答案:D
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i <= 10) {
i++;
if (i % 2 != 0)
continue;
sum += i;
}
System.out.println(sum);
}
A.55 B.45
C.35 D.30
E.类是对象的抽象,对象是类的具体化,实例是类的另一个名称 F.类是对象的抽象,对象是类的具体化,实例是对象的另一个名称
1+3+5+7+9= 25?
- 下面关于java中包的说法正确的是 ( AD )。
A. 在java中可以使用import语句导入包
B. 在java中可以使用package语句导入包
C. 位于同一个包中的类,不需要导包就可以直接访问
D. 不同的包中可以出现类名相同的类 - 下列关于Java语言的特点,描述错误的是( C )
A.Java是跨平台的编程语言
B.Java支持分布式计算
C.Java是面向过程的编程语言
D.Java支持多线程 - 在switch(expression)语句中,expression的数据类型不能是( A )
A. double B. char C. byte D. short
expression的数据类型不能是:double
java 1.6(包括)以前,只支持等价成int基本类型的数据byte,short,int,char(其他的均不可以)
java 1.7支持String类型的数据
- 已知int[] arr = new int[10];下列给出的数组元素中,错误的是( C )
A. arr[ 6] B. arr[ 9] C. arr[ 10] D. arr[0] - 给出代码 ( B ):
public class Test {
public static void main(String[] args){
int a=10;
int b=5;
if(++a>=b++&& a–<=b–) { a++;
b–;
}
System.out.println(a+b);
}
}
运行此类后,运行后显示如下:
A:13 B:15 C:20 D:25 E:以上都不是
++a>=b++ 11 5
a–<=b-- 11 5
b-- 5
a+b 11+4 =15
- 在java语言中,哪一个包中的类是自动导入的?(A ) 正确答案:D
A. java.io B. java.applet
C. java.awt D. java.lang
二、填空题
- Java源程序文件和字节码文件的扩展名分别为( .java )和(.class )。
- 结构化程序设计所规定的三种基本控制结构是(if )、( while )、(for )。for while switch
- switch语句中,在每个case语句后进行跳转的语句是(continue )。defalut break
- java语言中的三目运算符格式( a>b?a:b )。正确答案:x>y?x:y
- 设a = 8,则表达式a >>> 2的值是( 64)。正确答案:2
- 设x = 2,则表达式( x + + )* 3的值是( 6)。正确答案:9 6
- 若x = 5,y = 10,则x > y&&x++ == y–的逻辑值为(false )。
- Java语言中,移位运算符包括:>>、<<和( ==). 正确答案:>>> <<<
三、程序阅读题
- public class Sum{
public static void main(String [] args){
int j=10;
System.out.println("j is : "+j);
calculate(j);
System.out.println("At last, j is : "+j);
}
static void calculate (int j){
for (int i = 0;i<10;i++)
j++;
System.out.println("j in calculate() is: "+j);
}
}
程序的运行结果是:
j is : 10
j in calculate() is: 20
At last,j is : 10
- 阅读下列程序,写出程序运行的结果:
1:public class Compute {
2: public static void main (String[] args) {
3: int first=1,second=1,third;
4: System.out.print(first+” “+second+” “);
5: for(int i=3; i<=7; i++){
6: third = first + second;
7: System.out.print(third+” “);
8: first = second;
9: second = third;
10: }
11: }
12:}
(1)程序第5-10行的for循环共循环几次?
(2)程序输出的结果是什么?
(1)5次
(2)1 1 2 3 5 8 13
- 阅读以下程序,写出输出结果。
public class TestArray{
public static void main(String args[]){
int i,j;
int a[] = {5,9,6,8,7};
for(i=0;i<a.length-1;i++){
int k = i;
for(j=i;j<a.length;j++)
if(a[j]<a[k]) k=j;
int temp = a[i];
a[i] = a[k];
a[k] = temp;
}
for(i=0;i<a.length;i++)
System.out.print(a[i]+” “);
System.out.println();
}
}
程序运行结果是:
5 6 7 8 9
- public static void main(String args[]) {
int a=10;
int b=20;
boolean flag = a++>b-- && b++>a–;
System.out.println(flag+",a="+a+",b="+b);
}
求程序的输出结果:
false,a=10,b=20
四、简答题
1.在一个循环中使用break和continue语句有什么不同的效果?
用了break就跳出循环,终止循环了
continue会继续执行下面的case
2.请简述while语句和do-while语句的区别?
while 至少执行0次循环,先判断再进入循环
do-while 至少执行一次循环
3.简述什么是方法的重载?
在一个类里面进行重载,与权限修饰符无关,参数类型,顺序,个数不同。
4.定义一个方法的格式是什么,以及方法的注意事项?
修饰符、返回值类型、方法名称(参数类型 参数名称,…){
方法体
Return 返回值;
}
修饰符:public static
返回值类型:基本数据类型中的某个,最终接收数据具体结果类型;没有具体返回值类型用void代替;
方法名:给这个方法或功能起的名字(小驼峰命名:单个单词全小写,多个单词第一个单词首字母小写,其余大写);
参数
参数类型:基本数据类型;
参数名:变量名;
实际参数:具体在参与运算的实际值;
形式参数:在方法中传递的参数;
return:将具体参与运算的结果返回给调用者;
五、编程题
1.(不死神兔)需求:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子。
假如兔子都不死,问第二十个月的兔子的对数是多少?
斐波那契数列
import java.util.Arrays;
import java.util.Scanner;
public class f{
public static void main(String[] args) {
int i = 1, j = 0, month, x;
for (month = 1; month <= 12; month++) {
x = i;
System.out.println("第" + month + "个月有" + i + "对兔子。");
i = i + j;
j = x;
}
}
}
2.(经典案例)请编程实现下面的要求:在编程竞赛中,有10个评委
通过键盘录入方式为参赛的选手打分(整数),选手的最后得分为:去掉一个最高分和一个最低分后其余8个选手的平均值。(求平均值);
public class Average{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int arr[] = new int[10];
for(int i = 0 ; i< 10; i++) {
arr[i] = input.nextInt();
}
int sum =0 ;
Arrays.sort(arr);
for(int i =1 ; i< arr.length-1;i++) {
sum +=arr[i];
}
System.out.println((double)sum/8);
}
}
3.一张单据上有一个5位数的密码1XX23, 这个数能被3和7整除 , 设计一个算法 , 求XX可能为多少
public class Qiumima {
public static void main(String[] args) {
for(int i = 0; i<=10;i++) {
for(int j = 0;j<=10;j++) {
if((10000+1000*i+100*j+20+3) % 3==0 && (10000+1000*i+100*j+20+3) % 7==0 ) {
System.out.println(i+" "+j);
}
}
}
}
}
4.在有如下的一个数组:
Int[] arr1 = {1,2,0,5,6,0,2,0,0,4,5,0,7,0,8},要求将以上数组中值为 0的项去掉,将不为0的值存入到一个新的数组,生成的新数组为 int[] arr2 = {1,2,5,6,2,4,5,7,8}
public class Kuorong{
private static void dealZero(int[] arr1) {
int n = 0;
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] != 0) {
n++;
}
}
int new_arr1[] = new int[n];
int m = 0;
for (int i = 0; i < arr1.length; i++) { // new
if (arr1[i] != 0) {
new_arr1[m++] = arr1[i];
}
}
for (int a : new_arr1) {
System.out.print(a + " ");
}
}
public static void main(String[] args) {
int[] arr1 = { 1, 2, 0, 5, 6, 0, 2, 0, 0, 4, 5, 0, 7, 0, 8 };
dealZero(arr1);
}
}
5.求100内的质数,并统计个数
public class zhishu {
public static void main(String[] args) {
int n = 0;
for (int i = 2; i <=100; i++) {
boolean flag = true;
for (int j = 2; j <i; j++) {
if (i % j == 0) {
flag = false;
break;
}
}
if (flag) {
System.out.print(i + " ");
n++;
}
}
System.out.println();
System.out.println("n: " + n);
}
}
本文是一份关于Java SE的编程测试试卷,涵盖选择题、填空题、程序阅读及简答题,涉及Java标识符、语法、数据类型、流程控制、方法重载等多个核心概念。通过对这份试卷的解答,可以检验和提升对Java基础知识的理解和应用能力。
938

被折叠的 条评论
为什么被折叠?



