JAVASE阶段测试试卷

本文是一份关于Java SE的编程测试试卷,涵盖选择题、填空题、程序阅读及简答题,涉及Java标识符、语法、数据类型、流程控制、方法重载等多个核心概念。通过对这份试卷的解答,可以检验和提升对Java基础知识的理解和应用能力。


括号里面是本人做的答案,括号外面是正确答案
大家有不懂的建议多动手搜一搜,百度是我们的第一老师
如果我哪里有不对的地方,欢迎大家留言指出,我会感谢你的

一、不定项选择题:

  1. 下面哪些是合法的标识符 ( B )正确答案:BD。
    A.class B.$abc
    C.1234 D._name

标识符说直白点就是变量,不能用关键字做变量
class 是关键字,不能以数字开头
可以以¥或_或字母开头

  1. 在Java中,下列哪些说法是正确的 ( AC )。
    A.java源文件的扩展名为.java
    B.写好的java源程序可以直接运行
    C.编写的源程序必须先编译后才能运行
    D.程序员可以读懂扩展名为.class的文件

写好的java源程序必须先编译后才能运行,B对C错
.class是编译后的文件,程序员读不懂

  1. 下面哪些赋值语句是正确的 ( 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错误

  1. 在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需要强制转换,否则会有精度损失

  1. 下列代码的输出结果是()。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

  1. 下列代码运行的结果是 ( 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

  1. 尝试运行下面的代码会发生什么? ( 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方法

  1. 编译并运行以下代码将发生什么( 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 不能解析为变量

  1. 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
  2. 下面哪些函数是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;}

  1. 在java中,关于数组描述正确的是( B D)。
    A.数组中的索引下标从1开始 B.存储在数组当中的数据都属于同一数据类型
    C.通过数组名.length()能获得数组的长度 D.数组的最大索引下标是数组的长度减1

A下标从0开始
C.length获取数组长度,.length()获取字符串长度

  1. 下面程序的输出结果是什么 ( C )正确答案:D
    int[] arr = new int[10];
    System.out.println(arr[0]);
    A.编译不通过 B.运行时出错
    C.输出null D.输出0

基本数据类型默认是0,引用数据类型是null

  1. 下面哪个语句正确地声明一个整型的二维数组 ( 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];
  2. 以下代码输出是 ( 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?

  1. 下面关于java中包的说法正确的是 ( AD )。
    A. 在java中可以使用import语句导入包
    B. 在java中可以使用package语句导入包
    C. 位于同一个包中的类,不需要导包就可以直接访问
    D. 不同的包中可以出现类名相同的类
  2. 下列关于Java语言的特点,描述错误的是( C )
    A.Java是跨平台的编程语言
    B.Java支持分布式计算
    C.Java是面向过程的编程语言
    D.Java支持多线程
  3. 在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类型的数据

  1. 已知int[] arr = new int[10];下列给出的数组元素中,错误的是( C )
    A. arr[ 6] B. arr[ 9] C. arr[ 10] D. arr[0]
  2. 给出代码 ( 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

  1. 在java语言中,哪一个包中的类是自动导入的?(A ) 正确答案:D
    A. java.io B. java.applet
    C. java.awt D. java.lang

二、填空题

  1. Java源程序文件和字节码文件的扩展名分别为( .java )和(.class )。
  2. 结构化程序设计所规定的三种基本控制结构是(if )、( while )、(for )。for while switch
  3. switch语句中,在每个case语句后进行跳转的语句是(continue )。defalut break
  4. java语言中的三目运算符格式( a>b?a:b )。正确答案:x>y?x:y
  5. 设a = 8,则表达式a >>> 2的值是( 64)。正确答案:2
  6. 设x = 2,则表达式( x + + )* 3的值是( 6)。正确答案:9 6
  7. 若x = 5,y = 10,则x > y&&x++ == y–的逻辑值为(false )。
  8. Java语言中,移位运算符包括:>>、<<和( ==). 正确答案:>>> <<<

三、程序阅读题

  1. 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. 阅读下列程序,写出程序运行的结果:
    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

  1. 阅读以下程序,写出输出结果。
    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

  1. 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);
	}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值