java基础周测

一:选择题(共10题,每题2分)

  1. 以下代码运行输出是(C)

public class person0 {
    private String name="Person";
    int age=0;
}
public class child extends person0{
    public String grade;

    public static void main(String[] args) {
        person0 p=new child();
        System.out.println(p.name);


    }
}

A) 输出:Person

  B) 没有输出

  C) 编译出错

  D) 运行出错

  1. 在使用super 和this关键字时,以下描述正确的是(A)

A) 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过

B) super()和this()不一定要放在构造方法内第一行

C) this()和super()可以同时出现在一个构造函数中

D) this()和super()可以在static环境中使用,包括static方法和static语句块

  1. 以下对封装的描述正确的是(D)

A) 只能对一个类中的方法进行封装,不能对属性进行封装

  B) 如果子类继承了父类,对于父类中进行封装的方法,子类仍然可以直接调用

  C) 封装的意义不大,因此在编码时尽量不要使用

D) 封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性

  1. 以下对继承的描述错误的是(A)

A) Java中的继承允许一个子类继承多个父类

  B) 父类更具有通用性,子类更具体

  C) Java中的继承存在着传递性

D) 当实例化子类时会递归调用父类中的构造方法

  1. 以下程序的运行结果是()

class person {
    public person(){
        System.out.println("this is a person");
    }
}
public class Teacher extends person{
    private String name="tom";
    public Teacher(){
        System.out.println("this is a teacher");
        super();
    }

    public static void main(String[] args) {
        Teacher teacher=new Teacher();
        System.out.println(this.name);
    }
}

A) this is a Person

  this is a teacher

tom

B) this is a teacher

  this is a Person

  tom

C) 运行出错

D) 编译有两处错误

改:

class person {
    public person(){
        System.out.println("this is a person");
    }
}
public class Teacher extends person{
    private String name="tom";
    public Teacher(){
        super();
        System.out.println("this is a teacher");
    }

    public static void main(String[] args) {
        Teacher teacher=new Teacher();
        System.out.println(teacher.name);
    }
}

this is a person

this is a teacher

tom

  1. 以下说法错误的是(D)

A) super.方法()可以调用父类的所有非私有方法

  B) super()可以调用父类的所有非私有构造函数

  C) super.属性可以调用父类的所有非私有属性

  D) this和super关键字可以出现在同一个构造函数中

  1. 访问修饰符作用范围由大到小是(D)

A) private-default-protected-public

  B) public-default-protected-private

  C) private-protected-default-public

  D) public-protected-default-private

  1. 以下(D)不是Object类的方法

A) clone()

  B) finalize()

  C) toString()

  D) hasNext()

  1. 以下对重载描述错误的是(B)

A) 方法重载只能发生在一个类的内部

  B) 构造方法不能重载

  C) 重载要求方法名相同,参数列表不同

  D) 方法的返回值类型不是区分方法重载的条件

  1. 以下对接口描述错误的有(D)

A) 接口没有提供构造方法

  B) 接口中的方法默认使用public、abstract修饰

  C) 接口中的属性默认使用public、static、final修饰

  D) 接口不允许多继承

二、填空题(共10题,每题2分)

  1. 如果一个方法不返回任何值,则该方法的返回值类型为 void

  1. 如果子类中的某个 方法名 返回值类型 参数列表 与父类中的某个方法完全一致,则称子类中的这个方法覆盖了父类的同名方法。

  1. 接口中所有的属性均为 public static final 的。

4、局部变量的名字与成员变量的名字相同,若想在该方法内使用成员变量,必须使用关键字 this

5、 java.lang 包是java语言的核心包,它包含了运行java程序必不可少的系统类,在使用这个包中的类时不需要import。

6、对于int型变量,内存分配 4 个字节。

7、在Java中有二维数组int [ ] [ ] array={{1,2,3},{4,5}},可以使用 array[0].length 得到二维数组中第二维中第一个数组的长度。

8、 javac 命令用于执行在Java虚拟机中运行类的类文件。

9、Java提供了三种注释类型,分别是 单行注释// 多行注释/* 文档注释/**

10、基本数据类型的类型转换中,要将double类型的常量3.14159赋给为整数类型变量n的语句是 final double=3.14159

三、简答题(共5题,每题4分)

  1. 如果有两个类A、B(注意不是接口),你想同时使用这两个类的功能,那么你会如何编写这个C类呢?

将A,B类定义成为父子类,A为B的父类,B为C的父类。C就可以同时使用A,B的功能。

举例:

public class A {

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private String  name;
    public void eat(){
        System.out.println(name+"在吃东西!");
    }
}
public class B extends A{
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    private  int age;
    public void eat(){
        System.out.println(age+"岁"+super.getName()+"吃东西!");
    }

}
public class test extends B{
    public static void main(String[] args) {
        test t=new test();
        t.setName("李明");
        t.setAge(5);
        t.eat();
    }
}
  1. 谈谈你对抽象类和接口的理解。

抽象类更像是一个模板,它拥有类的所有功能,它不仅可以写抽象方法,也可以写实现的方法,定义变量等。总归它有类的一切功能只是不能被实例化而已。他有单继承的功能

接口更像是对于行为上的定义,它是抽象方法的集合,它的变量会被private static final默认修饰。它可以拥有多实现的功能。

抽象类不需要子类强制覆写所有功能,接口必须要子类覆写所有功能。

  1. 静态变量和实例变量的区别。

静态变量前要加static关键字,而实例变量前则不加。

实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量

静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。

实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

  1. Overload和Override的区别。Overload是否可以改变返回值

(1)方法重载:存在一个类中,方法名必须相同,参数列表不同(参数个数,类型,顺序不同)与返回值无关。

(2)方法重写:存在子父类中,子类把父类的方法重写一遍。返回值,方法名,参数列表必须一致,子类的访问修饰符要大于等于父类的访问修饰符。

overload可以改变返回值

  1. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

在java 5以前,switch(expr)中,expr只能是byte,short,char,int.从java 5开始,java中引入了枚举类型,expr也可以是enum类型,从java 7开始,expr还可以是字符串(String),但是长整型long在目前所有版本中都是不可以的。

switch可以作用在byte,不能作用在long,可以作用在string上。

四、编程题(共3题,第(1)(2)题10分,第(3)题20分)

  1. 从控制台输入电话号,判断是固定电话(8位)还是手机号(11位)。

  1. 如果是固定电话,则把其奇数位分别加5后,打印输出新的。电话号。

  1. 如果是手机号,则把偶数位分别加8后,打印输出新的手机号。

  1. 要求计算后的电话号码位数不变

package demo7;

import java.util.Scanner;

/**
 * @author jsofa
 * @email jsofa@163.com
 * @date 2023/1/8
 */
public class Phone {
    //1. 从控制台输入电话号,判断是固定电话(8位)还是手机号(11位)。
    //    a. 如果是固定电话,则把其奇数位分别加5后,打印输出新的。电话号。
    //    b. 如果是手机号,则把偶数位分别加8后,打印输出新的手机号。
    //    c. 要求计算后的电话号码位数不变
    public static void main(String[] args) {
        for(;;) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入电话号:");
            String phone = sc.next();
            if (phone.length() == 8) {
                String str = null;
                System.out.println("该电话为固定电话!");
                for (int i = 0; i < phone.length(); i += 2) {
//                System.out.print(phone.charAt(i));//截取奇数位字符
                    char k = phone.charAt(i);
                    String o = String.valueOf(k);//截取奇数位字符串
//                    System.out.println(o);
                    int kInt = Integer.parseInt(String.valueOf(k));
                    kInt += 5;
                    String s=Integer.toString(kInt);
                    for (int j = 0; j <o.length() ; j++) {
                        for (int l = 0; l <s.length() ; l++) {
                            str = phone.replace(o.substring(j),s.substring(l));//替换后的号码
                        }
                    }
                }
                System.out.println(str);
            } else if (phone.length() == 11) {
                String str = null;
                System.out.println("该电话为固定电话!");
                for (int i = 0; i < phone.length(); i += 1) {
//                System.out.print(phone.charAt(i));//截取偶数位字符
                    char k = phone.charAt(i);
                    String o = String.valueOf(k);//截取偶数位字符串
                    int kInt = Integer.parseInt(String.valueOf(k));
                    kInt += 8;
                    String s=Integer.toString(kInt);
                    str = phone.replace(o, s);//替换后的号码
                }
                System.out.println(str);
            } else {
                System.out.println("号码输入有误,请重新输入!");
            }
        }

    }
}

  1. 创建电子产品类,包含存储数据的方法。

  1. 创建电脑类,可以存储数据以及玩游戏;

  1. 创建手机类,可以存储数据以及打电话;

  1. 自行设计题目的结构(比如:接口,抽象类,继承,实现等…)

3、创建Animal类,创建Dog类以及Cat类,分别继承(或实现)Animal类。Dog和Cat分别有不同的eat方法。

再创建Food类,创建Bone类以及Fish类,分别继承(或实现)Food类,Bone和Fish有不同的属性。

创建Test类,分别测试Dog吃Bone,以及Cat吃Fish。

public class Animal {
    //3、创建Animal类,创建Dog类以及Cat类,分别继承(或实现)Animal类。Dog和Cat分别有不同的eat方法。
    //再创建Food类,创建Bone类以及Fish类,分别继承(或实现)Food类,Bone和Fish有不同的属性。
    //创建Test类,分别测试Dog吃Bone,以及Cat吃Fish。
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    public void eat(){
        System.out.println(name+"在吃东西!");
    }
}
public class Cat extends Animal{
    @Override
    public void eat() {
        System.out.println(getName()+"在吃猫粮!");
    }
}
public class Dog extends Animal{
    @Override
    public void eat() {
        System.out.println(getName()+"在吃骨头!");
    }
}
public class Done extends Food{
    @Override
    public void foods() {
        System.out.println(getName()+"在吃"+getFood());
    }
}
public class Fish extends Food{
    @Override
    public void foods() {
        System.out.println(getName()+"在吃"+getFood());
    }
}
public class Food extends Animal{
    public String getFood() {
        return food;
    }

    public void setFood(String food) {
        this.food = food;
    }

    private String food;
    public void foods(){
        System.out.println(getName()+"在吃"+food);
    }
}
public class Test extends Food{
    public static void main(String[] args) {
        Test t=new Test();
        t.setName("泰迪");
        t.setFood("猪骨头!");
        t.foods();
        t.setName("花花");
        t.setFood("小金鱼!");
        t.foods();

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值