javaSE基础总测试

简答题

1、Java 中的 Math. ceil(-1. 5) 等于多少?

-1

2、抽象类必须要有抽象方法吗?

不一定,但是有抽象方法的类一定是抽象类

3、 throw 和 throws 的区别?

throw 表示制造异常,写在方法当中。格式是 throw new 异常类名称(参数);
throws 表示抛出异常,写在方法声明上。格式是 throws 异常类名称1,异常类名称2,异常类名称3

4、 final、finally 有什么区别?

final 是关键字 用来声明时定义的,是不可变的。而fianlly它只能用在try/catch语句中,后面还加一个代码块,表示最终被执行的

5、 常见的异常类有哪些,列举5个常见异常

空指针异常 NullPointerException
数组索引越界异常 ArrayIndexOutOfBoundsException
IO异常 IOException
SQL异常 SQLEeception
类转换异常 ClassCastException

6、 == 和 equals 的区别是什么?

== 是比较的内存地址,而equals比较的是属性值

7、 final 在 Java 中有什么作用?

fianl 是个关键字 ,不可变的
如果用来修饰变量,那么该变量一定是常量,需要初始化。
如果用来修饰方法,则该方法不能被重写,
如果用来修饰类,则不能被继承,是不可改变的

8、 接口和抽象类有什么区别?

比如干爹与亲爹的区别,干爹可以有多个,但是亲爹只能有一个

9、short s = 1 ;s = s + 1 ;有错吗?为什么?short s = 1 ;s += 1 ;有错吗?为什么?

第一个有问题,s=s+1;它会默认转为int类型,而第二个则不会,第二个类似于 s++;就是自增,不会转为int类型,所以不报错

10、下面的代码输入什么?

String str6 = "b";  
String str7 = "a" + str6;  
String str67 = "ab";  
System.out.println("str7 = str67 : "+ (str7 == str67));

str7 = str67 : false

11、下面的代码输入什么?

 final String str8 = "b";  
String str9 = "a" + str8;  
String str89 = "ab";  
System.out.println("str9 = str89 : "+ (str9 == str89)); 

str9 = str89 : true

12、说下Hashtable HashMap的区别?

HashMap可以空值空键,而Hashtable 不可以,而且HashMap效率要比Hashtable 高

13、 List Set Map的区别?

List 和Set是单列集合,他们的区别就是是否有序,能否重复,是否有索引,
而Map则是键值对,一 一对应。

14、java中有几种访问修饰符以及它们区别?

public 都可以使用 (大家都能用)
protected 除了不同包,非子类不可以使用,都可 (除了陌生人)
默认 本类加同包不同类 (自己加邻居)
private 只能本类使用 (自己)

15、代码中有且仅有如下代码String s1 = new String(“Hello”); ,这行代码会创建几个字符串对象?

第一个指的是 new 出来的 String 对象,直接存放在 堆内存当中。
第二个指的是 “Hello” 字符串对象,存在于 堆内存的常量池当中。

16、字节流和字符流有什么区别和联系?

字节流:都可以使用
字符流:能解决中文乱码问题

17、说一说 BufferedReader 和 BufferedWriter的特殊方法,是哪些,有什么作用?

BufferedWriter 提供了自动换行的方法 —— newLine() 方法
BufferedReader 提供了读取一整行的方法 —— readLine() 方法。

18、说一说 this 和 super 两个关键字的区别和用法?

this关键字
1.this关键字只能在方法内部使用,this用于本类的调用,
2、为了区分属性和局部变量,可以通过this关键字来调用
而super代表了父类空间的引用
1.子父类存在着同名的成员时,在子类中默认时访问子类的成员,可以通过super关键字指定访问父类的成员
2.创建子类对象时,默认会先调用父类无参的构造方法,可以通过super关键字指定调用父类的构造方法

19、 说一说标记型接口,请举例说明?

标识式接口是没有任何方法和属性的接口 比如昨天刚刚学习的Cloneable

20、说一说lambda表达式的省略方式有哪几点?

lambda形参的类型是可以省略的
如果接口当中的抽象方法传入的参数只有一个则可以省略()
如果接口当中抽象方法的具体实现只有一句话则可以省略{}

代码题 (要求:编写一个控制台版本的员工管理系统,员工信息有ID、姓名、年龄、性别,并使用集合跟面向对象等知识点实现如下功能,请保持较好的代码规范跟项目结构)。(总分100分)

1、首页默认菜单选项:1员工列表、2新增员工、3修改员工信息、4删除员工,根据1234序号来选中对应的菜单功能,截图如下:
在这里插入图片描述
2、实现员工列表显示功能,执行完功能后回到主页菜单
在这里插入图片描述
3、实现新增员工信息功能,如果新增员工编号已存在,则新增失败,给出提示,执行完功能后回到主页菜单。
在这里插入图片描述
4、实现根据员工编号来修改员工信息的功能,执行完功能后回到主页菜单
在这里插入图片描述

5、实现根据员工编号来删除员工的功能,如果编号不存在给出提示,执行完功能后回到主页菜单。
在这里插入图片描述
Staff员工类:

package com.blb.test;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Staff {
    private  int id;
    private  String name;
    private  String sex;
    private  int age;
    Scanner in=new Scanner(System.in);
    List<Staff> list=new ArrayList<>();

    public Staff() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

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



    //显示员工信息
    public void display()
    {
        System.out.println("******************************************************");
        System.out.println("员工编号\t\t\t员工姓名\t\t\t\t\t员工性别 \t\t\t员工年龄 ");
        for(int i=0;i<list.size();i++)
        {
            System.out.println(list.get(i).id+"\t\t\t\t\t"+list.get(i).name+"\t\t\t\t\t "+list.get(i).sex+"\t\t\t\t\t"+list.get(i).age);
        }
        System.out.println("******************************************************");
    }

    //添加员工
    public void  add(){
        System.out.println("******************************************************");
        Staff staff=new Staff();
        System.out.println("请输入新增员工编号:");
        int id=in.nextInt();

        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).id==id){
                System.out.println("新增编号已存在!!!");
                return ;
            }
        }

        staff.setId(id);

        System.out.println("请输入新增员工姓名:");
        String name=in.next();
        staff.setName(name);

        System.out.println("请输入新增员工性别:");
        String sex=in.next();
        staff.setSex(sex);

        System.out.println("请输入新增员工年龄:");
        int age=in.nextInt();
        staff.setAge(age);

        list.add(staff);
        System.out.println("新增员工成功!!!");
        System.out.println("******************************************************");
    }

    //修改员工信息
    public void  update(){
        System.out.println("******************************************************");
        System.out.print("请输入要修改的员工编号:");
        int b=in.nextInt();
        int i;
        for(i=0;i<list.size();i++)
        {
            if(list.get(i).id==b)
                break;
        }
        if(i==list.size())
        {
            System.out.println("您输入的员工编号不存在,则无法进行修改操作");
            return ;
        }
        else
        {
            Staff staff=new Staff();
            System.out.println("请输入修改后的员工编号:");
            int id=in.nextInt();

            int j;
            for ( j = 0; j < list.size(); j++) {
                if(list.get(j).id==id){
                    System.out.println("修改编号已存在!!!");
                    return ;
                }
            }
            staff.id=id;

            System.out.println("请输入修改后的员工姓名:");
            staff.name=in.next();
            System.out.println("请输入修改后的员工性别:");
            staff.sex=in.next();
            System.out.println("请输入修改后的员工年龄:");
            staff.age=in.nextInt();

            list.set(i,staff);
            System.out.println("修改成功!!!");
        }
        System.out.println("******************************************************");
    }

    //删除员工信息
    public void  delete(){
        System.out.println("******************************************************");
        System.out.print("请输入要删除的员工编号:");
        int b=in.nextInt();
        int i;
        for(i=0;i<list.size();i++)
        {
            if(list.get(i).id==b)
                break;
        }
        if(i==list.size())
        {
            System.out.println("您输入的员工编号不存在,则无法进行删除操作");
            return ;
        }
        else {
            list.remove(i);
            System.out.println("删除成功");
        }
    }
}

测试类:

package com.blb.test;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        System.out.println("******************欢迎来到员工管理系统******************");
        Scanner in = new Scanner(System.in);
        Staff staff= new Staff();

        while(true) {
            System.out.println("1,员工列表        2,新增员工         3,修改员工          4,删除员工     5,退出系统");
            System.out.println("请输入要选择的菜单对应编号:");
            int num=in.nextInt();
            switch(num)
            {
                case 1://显示
                {
                    staff.display();
                    break;
                }
                case 2://添加
                {
                    staff.add();
                    break;
                }
                case 3://更新
                {
                    staff.update();
                    break;
                }
                case 4 ://删除
                {
                    staff.delete();
                    break;
                }
                case 5://退出
                default:
                    return ;
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值