JAVA - 初级测试题

编程语言5天前更新 AaronHzy
48 0

本文部分内容来自“北京尚学堂,本文不做任何商业用途,禁止转载

测试题


第一章 JAVA入门

选择题

  1. (单选)以下(C)不是Java的特点
    1. 平台无关性
    2. 高可靠性和安全性
    3. 指针运算
    4. 分布式应用和多线程
  2.  

  3. (单选)以下选项中是对一个Java源文件进行正确编译的语句是(D
    1. java Test
    2. java Test.class
    3. javac Test
    4. javac Test.java
  4.  

  5. (单选)在Java中,源文件Test.java中包含如下代码,则程序编译运行的结果是(B
    public class Test {
      public static void main(String[] args) {
        system.out.println("Hello!");
      }
    }
    1. 输出:Hello!
    2. 编译出错,提示“无法解析system”
    3. 运行正常,但没有输出任何内容
    4. 运行时出现异常
  6.  

  7. (单选)有一段Java 程序,其中public类名是A1,那么保存它的源文件名可以是(A
    1. A1.java
    2. A1.class
    3. A1
    4. 都不对
  8.  

  9. (选2项)以下选项中关于Java跨平台原理的说法正确的是(A,D
    1. Java源程序要先编译成与平台无关的字节码文件(.class),然后字节码文件再被解释成机器码运行
    2. Java语言只需要编译,不需要进行解释
    3. Java虚拟机是运行Java字节码文件的虚拟计算机。不同平台的虚拟机是不同的
    4. Java语言具有一次编译,到处运行的特点,可以在所有的平台上运行

第二章 数据类型与运算符

选择题

  1. (单选)下方代码中,执行之后a和b的值是(C
    int a = 1;
    int b = a++;
    1. 1,1
    2. 1,2
    3. 2,1
    4. 2,2
  2.  

  3. (单选)下面的赋值语句中错误的是(A
    1. float f = 11.1;
    2. double d = 5.3E12;
    3. double d = 3.14159;
    4. double d = 3.14D;
  4.  

  5. (选2项)以下选项中属于合法的Java标识符的是(C,D
    1. public
    2. 3num
    3. name
    4. _age
  6.  

  7. (选2项)在Java中,下面(A,B)语句能正确通过编译
    1. System.out.println(1+1);
    2. char i =2+'2';System.out.println(i);
    3. String s="on"+'one';
    4. int b=255.0;
  8.  

  9. (选2项)以下Java运算符中优先级别最低的两个选项是(A,C
    1. 赋值运算符 =
    2. 条件运算符 ?=
    3. 逻辑运算符 |
    4. 算术运算符 +

编码题

  1. 输入圆形半径,求圆形的周长和圆形的面积,并将结果输出。
    点击查看答案
    import java.util.Scanner; //导入Scanner类,用于获取用户输入的内容
    
    public class 第一节 {
      public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); //使用Scanner类创建对象
        System.out.println("请输入圆的半径:");
        double r = scanner.nextDouble(); //输入圆的半径
        System.out.println("该圆的半径为:" + r);
        System.out.println("该圆的周长为:" + r*2*3.14); //求圆的周长:半径*2*3.14
        System.out.println("该圆的面积为:" + r*r*3.14); //求圆的面积:半径*半径*3.14
      }
    }
    
  2.  

  3. 银行利率表如下表,计算存款10000元,活期1年、活期2年,定期1年,定期2年后的本息合计金额。
    利率项目年利率(%)
    活期存款0.35
    三个月定期存款1.10
    半年定期存款1.30
    一年定期存款1.50
    二年定期存款2.10
    点击查看答案
    public class 第二节 {
      public static void main(String[] args) {
        System.out.println("本金:"+ "10000");
        System.out.println("活期1年(本金总计):"+ ((10000*0.35/100)+10000)); //活期1年=(本金*年利率/100)+本金
        System.out.println("定期1年(本金总计):"+ ((10000*1.50/100)+10000)); //定期1年=(本金*年利率/100)+本金
        System.out.println("活期2年(本金总计):"+ (((10000*0.35/100)*2)+10000)); //活期2年=(本金*年利率/100)*2+本金
        System.out.println("定期2年(本金总计):"+ ((10000*2.10/100)*2+10000)); //定期2年=(本金*年利率/100)*2+本金
      }
    }
  4.  

  5. 制作一个四位整数密码加密系统,加密规则:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,获得密文。
    点击查看答案
    import java.util.Scanner;
    
    public class 第三节 {
      public static void main(String[] args) {
        int password,num1,num2,num3,num4;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入四位数字密码:");
        password = scanner.nextInt();
        num1 = (password/1000+5)%10; //(四位密码/1000+5)获得密码第一位加密后的数,取余
        num2 = (password%1000/100+5)%10; //(四位密码%1000)获得后三位,除以100获得密码第二位数+5获得密码第二位加密后的数,取余
        num3 = (password%100/10+5)%10; //(四位密码%100)获得后两位,除以10获得密码第三位数+5获得密码第三位加密后的数,取余
        num4 = (password%10+5)%10; //(四位密码/10+5)获得密码末尾加密后的数,取余
        System.out.println("加密密码:" + num4 + num3 +num2 + num1);
    	}
    }

第三章 控制语句

选择题

  1. (单选)分析如下Java代码,编译运行的输出结果是(A
    public static void main(String[ ] args) {
      boolean a=true;
      boolean b=false;
      if (!(a&&b)) {
        System.out.print("!(a&&b)");
      }else if (!(a||b)) {
        System.out.println("!(a||b)");
      }else {
        System.out.println("ab");
      }
    }
    1. !(a&&b)
    2. !(a||b)
    3. ab
    4. !(a||b)ab
  2.  

  3. (单选)给定如下Java代码,编译运行的结果是(A
    public class Test { 
      public static void main(String[] args) {
        int sum=0;
        for(int i=1;i<10;i++){
          do{
            i++;
            if(i%2!=0)
              sum+=i;
          }while(i<6);
        }
        System.out.println(sum);
      }
    }
    1. 8
    2. 15
    3. 24
    4. 什么也不输出
  4.  

  5. (单选)以下关于方法调用的代码的执行结果是(B
    public class Test {
      public static void main(String args[]) {
        int i = 99;
        mb_operate(i);
        System.out.print(i + 100);
      }
      static void mb_operate(int i) {
        i += 100;
      }
    }
    1. 99
    2. 199
    3. 299
    4. 99100
  6.  

  7. (选2项)下列选项中关于变量x的定义,(B,D)可使以下switch语句编译通过
    switch(x) {
      case 100 :
        System.out.println("One hundred");
        break;
      case 200 :        
        System.out.println("Two hundred");         
        break;
      case 300 :
        System.out.println( "Three hundred");
        break;
      default :
        System.out.println( "default");  
    }
    1. double x = 100;
    2. char x = 100;
    3. String x = "100";
    4. int x = 100;
  8.  

  9. (选2项)以下选项中添加到代码中横线处会出现错误的是(B,D
    public class Test {
      public float aMethod(float a, float b) {
        return 0; 
      }
    }
    1. public float  aMethod(float a, float b, float c) {return 0;}
    2. public float  aMethod(float c, float d) {return 0;}
    3. public int  aMethod(int a, int b) {return 0;}
    4. private int  aMethod(float a, float b) {return 0;}

编码题

  1. 用while循环分别计算100以内的奇数及偶数的和,并输出。
    点击查看答案
    public class test {
      public static void main(String[] args) {
        int a = 1;
        int sum = 0; //储存奇数的和
        int sum2 = 0; //储存偶数的和
        while(a<=100) {
          if(a%2==0) { //判断a%2==0,余0就是偶数
            sum2 += a; //符合条件sum2 = sum2+a
          }else{ //否则,就是奇数
            sum += a; //符合条件sum = sum+a
          }
          a++; //a自增,计数
        }
        System.out.println("奇数和:" + sum);
        System.out.println("偶数和:" + sum2);
      }
    }
  2.  

  3. 用for循环输出1-1000之间能被5整除的数,且每行输出5个。
    点击查看答案
    public class test {
      public static void main(String[] args) {
        for(int a=1, b=0; a<=1000; a++) {
          if(a%5==0) { //判断a%5==0,余0就是能被5整除的数
            System.out.print(a + "\t");
            b++; //b用于计次数,自增
          }
          if(b==5) { //判断b是否达到5次,达到执行if内语句
            System.out.println(); //输出空行,达到“每行输出5个”目标
            b = 0; //b归零,重新计数
          }
        }
      }
    }
  4.  

  5. 从键盘输入某个十进制整数数,转换成对应的二进制整数并输出
    点击查看答案
    import java.util.Scanner;
    public class test {
      public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个十进制整数");
        int ten = sc.nextInt(); //输入的十进制整数
        for(int a=10; a >= 0; a--) { //决定位数
          System.out.print(ten >>> a&1); //利用位移
        }
      }
    }
  6.  

  7. 编程求:∑1+∑2+……+∑100
    点击查看答案
    public class test {
      public static void main(String args[]){
        int sum = 0;
        for(int a=1; a<=100; a++) {
          for(int b=1; b<=a; b++) {
            sum += b;
          }
        }
        System.out.println(sum);
      }
    }
  8.  

  9. 编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求数列的第40位数
    点击查看答案
    import java.util.Scanner;
    public class test {
      public static void main(String[] args) { 
        Scanner input = new Scanner(System.in); 
        System.out.print("请输入需要查找的第几位数:"); 
        int n = input.nextInt(); 
        System.out.println("第" + n + "数是:" + findRegular(n)); 
        }
      static int findRegular(int n) {
          if (n <= 2) {//前两个数为1
              return 1;// 递归头
          } else {//f(n)=f(n-1)+f(n-2)
              n = findRegular(n - 1) + findRegular(n - 2);// 递归体
          }
          return n;
      }
    }

第四章 面向对象

选择题

  1. (单选)以下语句中关于Java构造方法的说法错误的是(B
    1. 构造方法的作用是为创建对象进行初始化工作,比如给成员变量赋值
    2. 一个Java类可以没有构造方法,也可以提供1个或多个构造方法
    3. 构造方法与类同名,不能书写返回值类型
    4. 构造方法的第一条语句如果是super(),则可以省略,该语句作用是调用父类无参数的构造方法
  2.  

  3. (单选)在Java中,以下程序编译运行后的输出结果为(D
    public class Test {
      int x, y;
      Test(int x, int y) {
        this.x = x;
        this.y = y;
      }
      public static void main(String[] args) {
        Test pt1, pt2;
        pt1 = new Test(3, 3);
        pt2 = new Test(4, 4);
        System.out.print(pt1.x + pt2.x);
      }
    }
    1. 6
    2. 34
    3. 8
    4. 7
  4.  

  5. (单选)分析如下Java程序的代码所示,则编译运行后的输出结果是(C
    public class Test {
      int count=9;
      public void count1(){
        count=10;
        System.out.print("count1="+count);
      }
      public void count2(){
        System.out.print("count2="+count);
      }
      public static void main(String[ ] args) {
        Test t=new Test();
        t.count1();
        t.count2();
      }
    }
    1. count1=9; count2=9;
    2. count1=10;count2=9;
    3. count1=10; count2=10;
    4. count1=9; count2=10;
  6.  

  7. (单选)使用权限修饰符(B)修饰的类的成员变量和成员方法,可以被当前包中所有类访问,也可以被它的子类(同一个包以及不同包中的子类)访问
    1. public
    2. protected
    3. defalut
    4. private
  8.  

  9. (单选)以下关于继承条件下构造方法执行过程的代码的执行结果是(A
    class Person {   
      public Person() {
        System.out.println("execute Person()");
      }
    }
    class Student extends Person { 
      public Student() {     
        System.out.println("execute Student() ");
      }  
    }
    class PostGraduate extends Student {   
      public PostGraduate() {  
        System.out.println("execute PostGraduate()");
      }  
    }
    public class TestInherit {
      public static void main(String[] args) {
        new PostGraduate();     
      }
    }
    1. execute Person()execute Student()execute PostGraduate()
    2. execute PostGraduate()
    3. execute PostGraduate()execute Student()execute Person()
    4. 没有结果输出
  10.  

  11. (单选)编译运行如下Java代码,输出结果是(D
    class Base {
      public void method(){
        System.out.print ("Base method");
      }
    }
    class Child extends Base{   
      public void methodB(){
        System.out.print ("Child methodB");
      }
    }
    class Sample {
      public static void main(String[] args) {
        Base base= new Child();
        base.methodB();
      }
    }
    1. Base method
    2. Child methodB
    3. hild methodB
    4. 编译错误
  12.  

  13. (选2项)在Java中关于静态方法,以下说法中正确的是(A,C
    1. 静态方法中不能直接调用非静态方法
    2. 非静态方法中不能直接调用静态方法
    3. 静态方法可以用类名直接调用
    4. 静态方法里可以使用this
  14.  

  15. (选2项)下列选项中关于Java中类方法的说法错误的是(A,C
    1. 在类方法中可用this来调用本类的类方法
    2. 在类方法中调用本类的类方法时可直接调用
    3. 在类方法中只能调用本类中的类方法
    4. 在类方法中调用实例方法需要先创建对象
  16.  

  17. (选2项)在Java中关于abstract关键字,以下说法正确的是(A,B
    1. abstract类中可以没有抽象方法
    2. abstract类的子类也可以是抽象类
    3. abstract方法可以有方法体
    4. abstract类可以创建对象
  18.  

  19. (选2项)在Java接口中,下列选项中属于有效的方法声明是(A,C
    1. public void aMethod( );
    2. final void aMethod( );
    3. void aMethod();
    4. private void aMethod( );

编码题

  1. 编写Java程序,用于显示人的姓名和年龄。定义一个类Person,该类中应该有两个私有属性: 姓名(name)和年龄(age),定义构造方法用来初始化数据成员。再定义显示 display() 方法将姓名和年龄打印出来,在 main 方法中创建人类的实例然后将信息显示。
    点击查看答案
    public class 第一节 {
      public static void main(String[] args) {
        Person p = new Person(21,"黄泽雨");
        p.display();
      }
    }
    class Person{
      private int age;
      private String name;
      public Person(int age, String name) {
        this.age = age;
        this.name = name;
      }
      public void display() {
        System.out.println("姓名:" + name + "\r\n" + "年龄:"+age);
      }
    }
  2.  

  3. 定义一个圆类Circle,在类的内部提供一个属性:半径(r),同时提供两个方法:计算面积( getArea())和计算周长(getPerimeter())。通过两个方法计算圆的周长和面积并且对计算结果进行输出。最后定义一个测试类对Circle类进行使用。
    点击查看答案
    public class 第二节 {
      public static void main(String[] args) {
        Circle c = new Circle();
        c.getArea();
        c.getPerimeter();
      }
    }
    class Circle{
      private double r = 10;
      public void getArea() {
        System.out.println("圆的面积=" + (Math.PI*r*r));
      }
      public void getPerimeter() {
        System.out.println("圆的面积=" + (2*Math.PI*r));
      }
    }
  4.  

  5. 构造方法与重载:定义一个网络用户类,信息有用户ID、用户密码、email 地址。在建立类的实例时把以上三个信息都作为构造函数的参数输入,其中用户ID和用户密码时必须缺省时email地址是用户 ID加上字符串“@gameschool.com”。
    点击查看答案
    public class 第三节 {
      public static void main(String[] args) {
        WebUser user = new WebUser("hzy",1234);
        user.login();
      }
    }
    class WebUser{
      private String id,email;
      private int pwd;
      public WebUser(String id,int  pwd) {
        this.id = id;
        this.email = id+"@gameschool.com";
        this. pwd = pwd;
      }
      public void login(){
        System.out.println("您的ID:"+id +"\r\n"+ "您的密码:"+pwd +"\r\n"+ "邮箱:"+email);
      }
    }
  6.  

  7. 编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。实现思路及关键代码:
    • 编写一个圆类Circle,该类拥有1个成员变量radius(私有,浮点型,用来存放圆的半径);2个构造方法(无参、有参);3个成员方法double getArea()(圆的面积)、double getPerimeter()(圆的周长)、void show()(输出圆的半径、周长、面积)
    • 编写一个圆柱体类Cylinder,它继承于上面的Circle类,该类拥有1个成员变量double hight(私有,浮点型、圆柱体的高)、1个构造方法、2个成员方法double getVolume()(获取圆柱体的体积)、void showVolume()(将圆柱体的体积输出到屏幕)
      点击查看答案
      public class 第四节 {
        public static void main(String[] args) {
          Cylinder c = new Cylinder(10,5); //直接调用子类对象,同时调用父类对象
          c.Show();
          c.showVolume();
        }
      }
      class Circle2{
        private double radius;
        public Circle2(double radius){
          this.radius = radius;
        }
        public double getArea() { // 获取圆的面积
          double area = radius*radius*Math.PI;
          return area;
        }
        public double getPerimeter() { //获取圆的周长
          double perimeter = 2*Math.PI*radius;
          return perimeter;
        }
        public void Show() {
          System.out.println("圆的半径:"+radius +"\r\n"+ "圆的面积:"+getArea() +"\r\n"+ "圆的周长:"+getPerimeter());
        }
      }
      class Cylinder extends Circle2{
        private double hight;
        public Cylinder(double radius,double hight) {
          super(radius);
          this.hight = hight;
        }
        public double getVolume() { //获取圆柱体的体积
          double volume = getArea()*hight;
          return volume;
        }
        public void showVolume() {
          System.out.println("圆柱体面积:"+getVolume());
        }
      }
  8.  

  9. 编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。实现思路及关键代码:
    • 定义乐器类Instrument,包括方法makeSound();
    • 定义乐器类的子类:二胡Erhu、钢琴Piano、小提琴Violin;
    • 定义乐手类Musician,可以弹奏各种乐器play(Instrument i);
    • 定义测试类,给乐手不同的乐器让他弹奏。
      点击查看答案
      public class 第五节 {
        public static void main(String[] args) {
          Erhu e = new Erhu();
          Piano p = new Piano();
          Violin v = new Violin();
          Musician m = new Musician();
          m.play(e);
          m.play(p);
          m.play(v);
        }
      }
      abstract class Instrument{
        String sound;
        abstract public String makeSound();
      }
      class Erhu extends Instrument{
        String sound = "二胡声";
        public String makeSound(){
          return sound;
        }
      }
      class Piano extends Instrument{
        String sound = "钢琴声";
        public String makeSound(){
          return sound;
        }
      }
      class Violin extends Instrument{
        String sound = "小提琴声";
        public String makeSound(){
          return sound;
        }
      }
      class Musician{
        public void play(Instrument i) {
          System.out.println(i.makeSound());
        }
      }
  10.  

  11. 编写程序描述影视歌三栖艺人。需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。实现思路及关键代码:
    • 分析影视歌三栖艺人的特性:可以演电影,可以演电视剧,可以唱歌
    • 定义多个接口描述特性,Movie接口(方法ActMovie)、Teleplay(方法ActTeleplay)、Singer接口(方法sing)
    • 定义艺人类实现多个接口
      点击查看答案
      // 输出结果
      大家好,我是周杰伦
      我能演电影
      我能演电视剧
      我会唱歌
      public class 第六节 {
        public static void main(String[] args) {
          Artist a = new Artist("周杰伦");
          a.ArtistName();
          a.ActMovie();
          a.ActTeleplay();
          a.Sing();
        }
      }
      interface Movie{
        void ActMovie();
      }
      interface Teleplay{
        void ActTeleplay();
      }
      interface Singer{
        void Sing();
      }
      class Artist implements Movie,Teleplay,Singer{
        String name;
        public Artist(String name) {
          this.name = name;
        }
        public void ArtistName() {
          System.out.println("大家好,我是"+name);
        }
        @Override
        public void ActMovie() {
          System.out.println("我能演电影");
        }
        @Override
        public void ActTeleplay() {
          System.out.println("我能演电视剧");
        }
        @Override
        public void Sing() {
          System.out.println("我会唱歌");
        }
      }

© 版权声明

相关文章