Java期末考

复习脑图

选择题


  1. 以下哪个不是Java的原始数据类型( B )
    A、int B、Boolean C、float D、char
  2. 若需要定义一个类域或类方法,应使用哪种修饰符?( A )
    A、static B、package C、private D、public
  3. 给出下面代码,关于该程序以下哪个说法是正确的?( C )
    public class Person{
    static int arr[] = new int[5];
    public static void main(String a[]){
    System.out.println(arr[0]); 
    }
    }
    A、编译时将产生错误 B、编译时正确,运行时将产生错误 C、输出零 D、输出空
  4. 以下哪个关键字可以用来对对象加互斥锁?( B )
    A、transient B、synchronized C、 serialize D、static
  5. 以下代码段执行后的输出结果为( A )
    int x =-3
    int y =-10
    System.out.println(y%x);
    A、 -1 B、2 C、1 D、3
  1. 有以下程序片段,下列哪个选项不能插入到行1。( D )

    public class Interesting{
    //do sth
    }

    A、import java.awt.*; B、package mypackage; C、class OtherClass{ } D、public class MyClass{ }

  2. 设有下面两个赋值语句:

    a = Integer.parseInt("12");
    b = Integer.valueOf("12").intValue();

    下述说法正确的是( D )。
    A、a是整数类型变量,b是整数类对象。
    B、a是整数类对象,b是整数类型变量。
    C、a和b都是整数类对象并且值相等。
    D、a和b都是整数类型变量并且值相等。

  3. 类Parent、Child定义如下:

    public class Parent
    { public float aFun(float a, float b) throws
    IOException { }
    }
    public class Child extends Parent{
    }

    将以下哪种方法插入行6是不合法的。( A )
    A、float aFun(float a, float b){ }
    B、public int aFun(int a, int b)throws Exception{ }
    C、public float aFun(float p, float q){ }
    D、public int aFun(int a, int b)throws IOException{ }

  4. 在使用interface声明一个接口时,只可以使用( D )修饰符修饰该接口。
    A、private B、protected C、private protected D、public

  5. 有以下方法的定义,请选择该方法的返回类型( D )。

    ReturnType method(byte x, double y){
    return (short) x/y*2;
    }

    A、byte B、short C、int D、double

  6. 关于以下代码段的说法正确的是( D )

    String s="abcde";
    StringBuffer s1=new StringBuffer("abcde");
    if(s.equals(s1))
    s1=null;
    if(s1.equals(s))
    s=null;

    A、第1行编译错误,String的构造器必须明确调用
    B、第3行编译错误,因为s与s1有不同的类型
    C、编译成功,但执行时在第5行有异常抛出
    D、编译成功,过程中也没有异常抛出

  7. 下列程序段执行后的结果是( A )。

    String s = new String("abcdefg");
    for (int i=0; i<s.length(); i+=2){
    System.out.print(s.charAt(i));
    }

    A) aceg B) ACEG C) abcdefg D) ab

  8. 有整型数组:int[] x={12,35,8,7,2};,则调用方法Arrays.sort(x)后,数组x中的元素值依次是( A ).
    A) 2 7 8 12 35 B) 12 35 8 7 2
    C) 35 12 8 7 2 D) 8 7 12 35 2

  9. 下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是( C )。

    File f = new File(填代码处);
    file =new FileReader(f);
    in=new BufferedReader(file);

    A) “/1.txt” B) “../my/1.txt” C) “c:\\my\\1.txt" D) “c:\ my\1.txt"

  10. 应用程序的main方法中有以下语句,则输出的结果是 ( A )。

    String s1=new String("abc");
    String s2=new String("abc");
    boolean b1=s1.equals(s2);
    boolean b2=(s1==s2);
    System.out.print(b1+" "+b2);

    A)true false B) false true C) true true D)false false

  11. 应用程序的main方法中有以下语句,则输出的结果是 ( B )。

    Hashtable hashtable=new Hashtable();
    hashtable.put("x","12345");
    hashtable.put("y","67890");
    hashtable.put("a","abcde");
    System.out.println(hashtable.get("a"));

    A) a B) abcde C) 12345 D) 67890

  12. 下面程序段执行后b的值是( B )。

    Integer integ =new Integer(9);
    boolean b = integ instanceof Object;

    A) 9 B) true C) 1 D) false

  13. 应用程序Test.java的源程序如下,在命令行键入:
    java Test aaa bb c
    回车后输出的结果是 ( D )。

    public class Test {
    public static void main(String args[]) {
    int k1=args.length;
    int k2=args[1].length();
    System.out.print(k1+" "+k2);
    }
    }

    A) 3 2 B)1 2 C) 1 3 D) 3 3

  14. 应用程序的main方法中有以下语句,则输出的结果是 ( )。

    int b[][]={{1}, {2,2}, {2,2,2}};
    int sum=0;
    for(int i=0;i<b.length;i++) {
    for(int j=0;j<b[i].length;j++) {
    sum*=b[i][j];
    }
    }
    System.out.println("sum=" + sum);

    A) 32 B)11 C) 2 D) 3 执行结果是0

  15. 应用程序的main方法中有以下语句,则执行后输出的结果是 ( D )。

    int[] x={125,21,5,168,98};
    int max=x[0];
    for(int i=1;i<x.length;i++){
    if(x[i]> max)
    max =x[i];
    }
    System.out.println(max);

    A) 125 B) 5 C) 98 D) 168

  16. 程序Test.java编译运行后输出的结果是( A )。

    public class Test {

    String s1="java";

    public static void main(String args[]) {

    int z=2;

    Test t=new Test();

    System.out.println(t.s1+z);

    }
    }

    A) java2 B)2 C)没有输出结果 D)java

  17. 应用程序的main方法中有以下语句,则输出的结果是 ( A )。

    String s1="0.5", s2="12";
    double x=Double.parseDouble(s1);

    int y=Integer.parseInt(s2);

    System.out.println(x+y);

    A) 12.5 B) 120.5 C) 12 D) “12.5”

  18. 以下哪个方法用于定义线程的执行体? ( C )
    A、 start() B、init() C、run() D、synchronized()

  19. 有如下代码段:

    { if(unsafe()){//do something...}
    else if(safe()){//do the other...}
    }

    其中,方法unsafe() 将抛出IOException, 请问可将以下哪项填入第1行?( D )
    A、public IOException methodName()
    B、public void methodName()
    C、public void methodName() throw IOException
    D、public void methodName() throws IOException

  20. 编译并运行以下程序,以下描述哪个选项是正确的( D )

    class A{
    protected boolean equals(){
    return super.equals();}
    }

    A、编译通过运行无异常 B、编译通过但运行时出错
    C、行2出错,不能成功编译 D、不能成功编译,行3出错

  21. 有语句String s=”hello world”; ,以下操作哪个是不合法的?( B )
    A、int i=s.length(); B、s>>>=3; C、String ts=s.trim(); D、String t=s+”!”;

  22. 给出如下代码:

        
    class Test{

      private int m;

      public static void fun() {

         // some code\...\

       }

    }

    如何使成员变量m 被函数fun()直接访问?( C )
    A、将private int m 改为protected int m
    B、将private int m 改为 public int m
    C、将private int m 改为 static int m
    D、将private int m 改为 int m

  23. Java application中的主类需包含main方法,main方法的返回类型是什么?( void )

  24. 设有下面两个赋值语句:

    a = Integer.parseInt("123");
    b = Integer.valueOf("123").intValue();

    下述说法正确的是( D )。
    A、a是整数类型变量,b是整数类对象。B、a是整数类对象,b是整数类型变量。
    C、a和b都是整数类对象并且值相等。 D、a和b都是整数类型变量并且值相等。

  25. 关于以下application的说明,正确的是( C )。

    class StaticStuff{
    static int x;
    static { x+=5;}
    public static void main(String args[ ])
    {
    System.out.println("x=" + x);
    }
    static { x/=5;}
    }

    A、4行与9行不能通过编译,因为缺少方法名和返回类型
    B、9行不能通过编译,因为只能有一个静态初始化器
    C、编译通过,执行结果为:x=1
    D、能通过编译,但程序运行结果不可预知,因为变量x没有初始化

  26. 有程序片段如下,以下哪个表示式的结果为true?( B )

    Float s=new Float(0.1f);
    Float t=new Float(0.1f);
    Double u=new Double(0.1);

    A、s==t B、s.equals(t) C、u.equals(s) D、t.equals(u)

    编程基础题


  1. 编写一个Java程序在屏幕上输出”你好!”。

    package exam;
    /**
    * @ClassName Exam1

    * @Description TODO

    * @Author 17235

    * @Date 2020/6/3 下午 1:22

    * @Version 1.0


    **/

    public class Exam1 {

    public static void main(String[] args) {

    System.out.println("你好!");

    }

    }
  2. 编写一个Java程序,用if-else语句判断某年份是否为闰年。

    package exam;
    import java.util.Scanner;
    /**

    * @ClassName exam2

    * @Description TODO

    * @Author 17235

    * @Date 2020/6/3 下午 1:32

    * @Version 1.0

    **/

    public class Exam2 {

    public static void main(String[] args) {

    Scanner in = new Scanner(System.in);

    System.out.println("请输入年份:");

    int year = in.nextInt();

    if (year % 4 == 0 && year % 100 != 0){

    System.out.println(year + "是闰年");

    }else if (year % 400 == 0){

    System.out.println(year + "是闰年");

    }else{

    System.out.println(year + "不是闰年");

    }

    }

    }
  3. 编写一个Java程序在屏幕上输出1!+2!+3!+……+10!的和。(p64,例2-2)

    package exam;

    /**

    * @ClassName Exam3

    * @Description TODO

    * @Author 17235

    * @Date 2020/6/3 下午 1:42

    * @Version 1.0


    **/

    public class Exam3 {

    public static int factorial(int n){

    int multiply = 1;

    for (int i = n; i > 0; i--){

    multiply *= i;

    }

    return multiply;

    }

    public static void main(String[] args) {

    int sum = 0;

    for (int i = 10; i > 0; i--){

    sum += factorial(i);

    }

    System.out.println(sum);

    }

    }
  4. 定义一个表示学生信息的类Student,要求如下:

    (1)类Student的成员变量:
    ​ sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成绩。
    (2)类Student带参数的构造方法:
    ​ 在构造方法中通过形参完成对成员变量的赋值操作。
    (3)类Student的方法成员:
    ​ getNo():获得学号;
    ​ getName():获得姓名;
    ​ getSex():获得性别;
    ​ getAge()获得年龄;
    ​ getJava():获得Java 课程成绩
    ​ 根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。

    package exam4;
    /**

    * @ClassName Student

    * @Description TODO

    * @Author 17235

    * @Date 2020/6/3 下午 2:01

    * @Version 1.0

    **/

    public class Student {

    private String sNo;

    private String sName;

    private String sSex;

    private int sAge;

    private int sJava;

    public String getsNo() {

    return sNo;

    }

    public void setsNo(String sNo) {

    this.sNo = sNo;

    }

    public String getsName() {

    return sName;

    }

    public void setsName(String sName) {

    this.sName = sName;

    }

    public String getsSex() {

    return sSex;

    }

    public void setsSex(String sSex) {

    this.sSex = sSex;

    }

    public int getsAge() {

    return sAge;

    }

    public void setsAge(int sAge) {

    this.sAge = sAge;

    }

    public int getsJava() {

    return sJava;

    }

    public void setsJava(int sJava) {

    this.sJava = sJava;

    }

    public void setAll(String sNo, String sName, String sSex, int sAge, int sJava) {

    setsNo(sNo);

    setsName(sName);

    setsSex(sSex);

    setsAge(sAge);

    setsJava(sJava);

    }

    @Override

    public String toString() {

    return "{" +

    "学号'" + sNo + '\'' +

    ", 姓名'" + sName + '\'' +

    ", 性别'" + sSex + '\'' +

    ", 年龄" + sAge +

    ", Java成绩" + sJava +

    '}';

    }

    public static int[] bubbleSort(int[] array) {

    if (array.length == 0) {

    return array;

    }

    for (int i = 0; i < array.length; i++) {

    for (int j = 0; j < array.length - 1 - i; j++) {

    if (array[j + 1] < array[j]) {

    int temp = array[j + 1];

    array[j + 1] = array[j];

    array[j] = temp;

    }

    }

    }

    return array;

    }

    public static void main(String[] args) {

    Student s1 = new Student();

    Student s2 = new Student();

    Student s3 = new Student();

    Student s4 = new Student();

    Student s5 = new Student();

    s1.setAll("001", "甲", "男", 18, 100);

    s2.setAll("002", "乙", "女", 19, 99);

    s3.setAll("003", "丙", "男", 18, 98);

    s4.setAll("004", "丁", "女", 19, 99);

    s5.setAll("005", "戊", "男", 18, 100);

    System.out.println(s1);

    System.out.println(s2);

    System.out.println(s3);

    System.out.println(s4);

    System.out.println(s5);

    double total = 5.0;

    double avg = (s1.getsJava() + s2.getsJava() + s3.getsJava() + s4.getsJava() + s5.getsJava()) / total;

    System.out.printf("平均成绩: %.2f\n", avg);
    int[] score = {s1.getsJava(), s2.getsJava(), s3.getsJava(), s4.getsJava(), s5.getsJava()};
    int[] sortScore = bubbleSort(score);;
    System.out.println("Java最高成绩:" + sortScore[sortScore.length - 1] + " Java最低成绩:" + sortScore[0]);
    }

    }
  5. 题目:判断101-200之间有多少个素数,并输出所有素数。

    程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。

       package exam;
    /**

    * @ClassName Exam5

    * @Description TODO

    * @Author 17235

    * @Date 2020/6/3 下午 2:43

    * @Version 1.0

    **/

    public class Exam5 {

    public static void main(String[] args) {

    boolean isPrime = true;

    int total = 0;

    for (int i = 101; i <= 200; i++){

    double temp = Math.sqrt(i);

    for (int j = 2; j < temp; j++){

    if (i % j == 0){

    isPrime = false;

    break;

    }

    }

    if (isPrime){

    System.out.println(i);

    total++;

    }

    isPrime = true;

    }

    System.out.println("共有素数" + total + "个");

    }

    }
  6. 题目:打印出所有的 “水仙花数 “,所谓 “水仙花数 “是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 “水仙花数 “,因为153=1的三次方+5的三次方+3的三次方。

    package exam;
    /**

    * @ClassName Exam6

    * @Description TODO

    * @Author 17235

    * @Date 2020/6/3 下午 3:10

    * @Version 1.0

    **/

    public class Exam6 {

    public static void main(String[] args) {

    int min = 100;

    int max = 1000;

    for (int i = min; i < max; i++){

    int ge = i % 10;

    int shi = i / 10 % 10;

    int bai = i / 100;

    if (Math.pow(ge,3) + Math.pow(shi,3) + Math.pow(bai,3) == i){

    System.out.println(i);

    }
    }

    }

    }
  7. 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

    在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。

    package exam;
    import java.util.Scanner;
    /**

    * @ClassName Exam7

    * @Description TODO

    * @Author 17235

    * @Date 2020/6/3 下午 3:22

    * @Version 1.0

    **/

    public class Exam7 {
    public static int max(int a,int b){

    return (a > b)?a:b;

    }

    public static int min(int a,int b){

    return (a < b)?a:b;

    }

    public static void main(String[] args) {

    Scanner in = new Scanner(System.in);

    System.out.println("请输入第一个正整数:");

    int n1 = in.nextInt();

    System.out.println("请输入第二个正整数:");

    int n2 = in.nextInt();

    int Multiply = n1 * n2;

    int min = min(n1,n2);

    int max = max(n1,n2);

    int greatestCommonDivisor;

    int leastCommonMultiple;
    while (min != 0){

    int temp = max % min;

    max = min;

    min = temp;

    }

    greatestCommonDivisor = max;

    System.out.println("最大公约数:" + greatestCommonDivisor);

    leastCommonMultiple = Multiply / greatestCommonDivisor;

    System.out.println("最小公倍数:" + leastCommonMultiple);

    }

    }
  8. 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

        package exam;
    import java.util.Scanner;
    /**

    * @ClassName Exam8

    * @Description TODO

    * @Author 17235

    * @Date 2020/6/3 下午 4:59

    * @Version 1.0

    **/
    public class Exam8 {

    public static void scanStatistics(String a) {

    char[] array = a.toCharArray();

    //字母个数

    int letter = 0;

    //空格个数

    int space = 0;

    //数字个数

    int num = 0;

    //其他字符

    int character = 0;
    for (int i = 0; i < array.length; i++) {

    array[i] = a.charAt(i);

    if (63 <= array[i] && array[i] <= 90 || 97 <= array[i] && array[i] <= 122) {

    letter++;

    } else if (48 <= array[i] && array[i] <= 57) {

    num++;

    } else if (array[i] == 32) {

    space++;

    } else {

    character++;

    }

    }

    System.out.print("英文字母个数:" + letter + " 空格个数:" + space + " 数字个数:" + num + " 其他字符个数:" + character);

    }
    public static void main(String[] args) {

    Scanner in = new Scanner(System.in);

    System.out.println("请输入一串字符:");

    String a = in.nextLine();

    scanStatistics(a);

    }

    }