java基础
- 简答题
- 1、Java 中的 Math. ceil(-1. 5) 等于多少?
- 2、抽象类必须要有抽象方法吗?
- 3、 throw 和 throws 的区别?
- 4、 final、finally 有什么区别?
- 5、 常见的异常类有哪些,列举5个常见异常
- 6、 == 和 equals 的区别是什么?
- 7、 final 在 Java 中有什么作用?
- 8、 接口和抽象类有什么区别?
- 9、short s = 1 ;s = s + 1 ;有错吗?为什么?short s = 1 ;s += 1 ;有错吗?为什么?
- 10、下面的代码输入什么?
- 11、下面的代码输入什么?
- 12、说下Hashtable HashMap的区别?
- 13、 List Set Map的区别?
- 14、java中有几种访问修饰符以及它们区别?
- 15、代码中有且仅有如下代码String s1 = new String("Hello"); ,这行代码会创建几个字符串对象?
- 16、字节流和字符流有什么区别和联系?
- 17、说一说 BufferedReader 和 BufferedWriter的特殊方法,是哪些,有什么作用?
- 18、说一说 this 和 super 两个关键字的区别和用法?
- 19、 说一说标记型接口,请举例说明?
- 20、说一说lambda表达式的省略方式有哪几点?
- 代码题 (要求:编写一个控制台版本的员工管理系统,员工信息有ID、姓名、年龄、性别,并使用集合跟面向对象等知识点实现如下功能,请保持较好的代码规范跟项目结构)。(总分100分)
简答题
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 ;
}
}
}
}