Java期末复习题详解

Java期末复习题详解

  • 选择题
    • 1
      • .class:
      • .java:
      • .cpp:
      • .txt:
    • 2
    • 3
    • 4
      • 封装:
      • 继承:
      • 覆盖:
      • 重载:
    • 5
      • 构造函数:
      • 特点:
    • 6
      • 异常处理:
      • 注:catch可以进行多重嵌套
    • 7
      • 类:
      • 对象:
    • 8
      • 标识符规范:
    • 9
      • 静态方法和非静态方法的区别:
    • 10
    • 11
    • 12
    • 13
      • Java使用类库:
      • Java文件管理:
      • 三者的顺序:
    • 14
    • 15
    • 16
    • 17
    • 18
      • 互斥锁(多线程章节)
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
      • 基本数据类型和包装类:
    • 27
    • 28
    • 29
    • 30找不到了
    • 31
      • 精度转化
    • 32
      • 抽象类定义:
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
      • 异常层次结构图
    • 39
    • 40
  • 填空
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
  • JDBC基础
  • 编程题

选择题

1

在这里插入图片描述

解释:

.class:

Java源文件经过javac编译后的文件扩展名

.java:

源文件保存时的文件扩展名

.cpp:

C++源文件保存时的文件扩展名

.txt:

文本文件扩展名

2

在这里插入图片描述

解释:

>>> : 在Java中表示无符号右移,即在最高位添0
但是题目有问题,这题无解

3

在这里插入图片描述

解释:
Int [] a = new int[3]:定义数组a,并且将数组的长度设置为3位,则数组下标为:0,1,2
,即数组可访问:a[0],a[1],a[2],所以a[3]无此元素
a. length = 3

4

在这里插入图片描述

解释:

封装:

对类或方法的操作,将类或方法固化为一段代码段,有利于后期的维护、复用等

继承:

对类或接口(特殊的类)的操作,将某一类按级别化成另一个类的父类,让子类拥有父类开放的(非private)的属性和方法,为后续各种操作进行铺垫和预备。

覆盖:

子类对父类的方法进行的操作(如果在子类中定义一个方法,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么可以说,子类的方法覆盖了父类的方法),目的是为了对父类的方法进行优化和扩展。

重载:

对类中的方法进行的操作(如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载。),目的是为了对方法的功能进行扩展和延伸。

5

在这里插入图片描述

解释:

构造函数:

构造函数是用于在对象创建后立即初始化对象的代码块。使用构造函数即在计算机的内存中开辟了一个空间。

特点:

构造函数的函数名和当前的类名必须相同,使用类时构造函数自动执行。

6

在这里插入图片描述

解释:

异常处理:

try{
可能出错的代码块
}catch(获取的对于出错代码块的异常){
对异常进行处理
}finally{
异常处理后固定执行的操作,即使不出现异常也会执行
}
break :用于终止循环

注:catch可以进行多重嵌套

7

在这里插入图片描述

解释:

类:

类是对某一类事物的描述,是抽象的、概念上的意义。类是对象的集合。

对象:

对象是实际存在的该类的具体事物的每一个个体,在具体的应用中实例化为一个实例。

8

在这里插入图片描述

解释:

标识符规范:

不可使用特殊字符开头,$和_可以,不可使用程序中的保留字,不可使用数字开头,不可使用汉语(虽然现在也可以用了,但是还是不许用)!

9

在这里插入图片描述

解释:
无参数返回值:void
使用类名作为前缀进行调用无需构造:static

静态方法和非静态方法的区别:

静态方法是在类中使用staitc修饰的方法,在类定义的时候已经被装载和分配。而非静态方法是不加static关键字的方法,在类定义时没有占用内存,只有在类被实例化成对象时,对象调用该方法才被分配内存。
静态方法中只能调用静态成员或者方法,不能调用非静态方法或者非静态成员,而非静态方法既可以调用静态成员或者方法又可以调用其他的非静态成员或者方法

10

在这里插入图片描述

解释:
构造的是ArrayList类并且继承List的接口所以开辟空间使用new List()

11

在这里插入图片描述

解释:
.java:Java源文件扩展名
.class: Java源文件经过javac编译后的文件扩展名

12

在这里插入图片描述

解释:
了解即可,无需深入
画图用paint()

13

在这里插入图片描述

解释:

Java使用类库:

Import + 类库路径(包名) + */应用类(类名)

Java文件管理:

使用package包对Java的源文件进行管理,package包命名全小写

三者的顺序:

在这里插入图片描述

14

在这里插入图片描述

解释:
编程使用英文半角
在这里插入图片描述

15

在这里插入图片描述

解释:
基础知识

16

在这里插入图片描述

解释:
Java期末复习题详解_第1张图片

17

在这里插入图片描述

解释:
Main方法是所有类中标志执行的方法,在main方法中的是类的执行主体,所有main方法均是继承于Object类的
固定写法:
Public static void main(String [ ]args)

18

在这里插入图片描述

解释:

互斥锁(多线程章节)

当使用synchroinzed锁住多段不同的代码片段,但是这些同步块使用的同步监视器对象是同一个时,那么这些代码片段之间就是互斥的。多个线程不能同时执行他们。

19

在这里插入图片描述

解释:
抽象类中的方法均是抽象方法,即使前面不写也默认有abstract

20

在这里插入图片描述

解释:
IO包说明是InputStream和OutputStream,其中的File类属于使用字节流进行加载文件为二进制进行读取或写入。

21

在这里插入图片描述

解释:
见17题

22

在这里插入图片描述

解释:
-10/-3 = 3 ……… -1
%:取余
-10%-3 = -1
所以答案是-1

23

在这里插入图片描述

解释:
Java仅支持单一继承无论是类还是接口都是单一继承,但可以实现多个接口使用implements关键字,继承类使用extends关键字。
这题选a但是题目出的不严谨

24

在这里插入图片描述

解释:
X数组的长度为4,索引最高位为3,x[k+5]数组越界

25

在这里插入图片描述

解释:
在这里插入图片描述

26

在这里插入图片描述

解释:

基本数据类型和包装类:

Java期末复习题详解_第2张图片

27

在这里插入图片描述解释:
基础概念

28

在这里插入图片描述解释:
构造方法可以有一个或多个
若类中不写构造方法则默认使用默认的无参构造,默认的构造方法继承自Object类
构造方法在对象创建的时候被调用
构造方法一定要和类名相同

29

在这里插入图片描述解释:
执行applet程序时start方法最先执行

30找不到了

31

Java期末复习题详解_第3张图片解释:

精度转化

x原来是byte型,y是double型
最后返回的x被强行转化为short型,但是y2任然是double型
所以(short)x/y
2是short/double,最后系统会转化为精度较高的double型

32

Java期末复习题详解_第4张图片解释:

抽象类定义:

abstract + class + 抽象类名 { abstract + 返回值类型 + 方法名(); }
其中方法中无需进行具体业务逻辑实现

33

Java期末复习题详解_第5张图片解释:
有public关键词需要进行独立的声明也就是单独形成一个类
在这里插入图片描述

34

Java期末复习题详解_第6张图片解释:
Integer是包装类,使用包装类就可以将简单数据类型转化为对象,来进行对象的相关操作,使用parseInt方法会将类型重新变成Int型

35

在这里插入图片描述解释:
导包基础知识

36

在这里插入图片描述解释:
开发中不常用,不是重点记一下就行

37

在这里插入图片描述解释:
导包的基础

38

在这里插入图片描述
解释:

异常层次结构图

Java期末复习题详解_第7张图片

39

在这里插入图片描述
解释:
不常用开发中,知道就行

40

在这里插入图片描述解释:
基础知识了,鼠标事件都是MouseEvent,看英语也能看的出来

填空

1

在这里插入图片描述
解释:
Sting x[ ][ ] = new int[3][2]定义了一个3行2列的二维数组
x[0][0] = ‘abc’ ; x[0][1] = ‘12345’;是将第一行的两个元素赋值了
根据回收机制,最后这个二维变量x实际上

x
columns\rows 0 1
0 abc 123456

所以x.length是2
x[0][1].length()是12345的长度就是5

2

2、Java i语言的变量由__变量名__、变量类型变量属性、__初值__组成。

3

3、当程序中需要抛出异常时,应该使用__throw__子句,当需要在方法中声明可能抛出的异常类型,应该使用__throws__子句。

4

4、java.applet包中的__Applet__类定义了Applet 与其运行环境之间的一个标准接口。

5

5、Java语言中提供的GUI功能主要由__java.awt__包和__java.swing__包中的类和接口实现。

6

6、Java源程序文件和字节码文件的扩展名分别为_.java__和__.class

7

7、Java 语言的类型检查机制要求对于没有返回值的方法,在其前面必须加__void__进行说明。

8

8、类是Java语言的一种__引用数据__类型。

9

9、在Java语言中,所有的对象均通过__new__运算符分配内存,并对内存进行自动管理。

10

10、每个Java Application程序可以包括许多方法,但是必须有且只能有一个__main()__方法,统一格式为 public static void main(String []args){},它是程序执行的入口。

11

11、若要在程序中定义一个公用的int型的类成员变量 MAX_LENGTH,且该变量的值保持常数值1000,则定义该变
量的语句是__public int MAX LENGTH=1000;_。

12

12、子类必须通过__super__关键字调用父类有参数的构造函数。

13

13、在Java语言中,所有的类都是类__0bject__的子类。

14

14、在Java程序中,通过类的定义只能实现单重继承,但通过__接口__的定义可以实现多重继承关系。

15

15、如果在Java程序中,需要使用java. util包中的所有类,则应该在程序开始处加上语句_import java.util.*__

16

Java期末复习题详解_第8张图片解释:
循环打印0~4,注意输出函数是print所以无需换行:01234

19

19、Java 源文件中最多只能有__1__个公共类,其它类的个数不限。

20

20、在 Java 中所有实现的多维数组,实际上是由一维数组构成的__数组的数组__。

21

21、设x =15,则表达式( x ++)/4 的值是__3__
解释:
x++是在单行执行之后再加1,15/4=3……3,取整数最后答案是3

22

22、__抽象__方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。

23

23、___run ()____方法用于定义线程的执行体.__start ()__方法用于启动线程.

24

24、String str1=”abc”;
String str2=new String( “abc”);
System. out.println(str1==str2);
则程序运行后输出结果为:__ false__

25

25、Java语言中,有一个类是所有类或接口的父类,这个类的名称是__Object__。

26

26、当启动 Applet程序时,首先调用的方法是__init( )__。

27

27、Java语言是一种完全的__面向对象的,适用于网络环境__程序设计语言。

28

28.如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是__Applet___类的子类

29

29.设int x = 2,则表达式(x++)/3的值是__0__

30

  1. Java提供的访问权限修饰符有4个,即: publicprivateprotected__和__default

31

  1. Java中有两种常用的字符串类,一个是String,另一个是__StringBuffer__。
    解释:
    其实我更加倾向于一个是StringBuffer,一个是StringBuilder

32

32.Java实现多线程的方法有两种,一种方法是通过创建__Thread__类的子类实现多线程,另一种方法是定义一个实现__Runable__接口的类。

33

  1. Java不支持多继承。但它允许一个类同时实现多个__接口__,这就相当于部分实现了多继承。

34

34.Java源文件中,__import__语句位于package语句之后、类定义之前。

35

  1. __OutputStreamWriter__类是OutputStream类的子类,用来处理以文件作为数据输出的数据流。

JDBC基础

详细参看:Java 数据库操作,JDBC学习总结
考试不需要把语句写出来,但是要知道过程,就是我注释的内容,不需要写语句但是这些基本东西还是要掌握,最好是都会写

//        注册驱动
       Class.forName("com.mysql.cj.jdbc.Driver");
//        获取数据库连接对象
        Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/syf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&allowPublicKeyRetrieval=true", "root", "syf20020816");
//        //定义sql语句查看所有数据库中的表
        String sql1 = "show tables";
//        //获取执行sql的对象Statement
        Statement state = cn.createStatement();
//        //执行sql语句
        state.executeQuery(sql1);
//        //释放资源
        state.close();
        cn.close();

Statement接口

用途:在已经连接的基础上向数据库发送sql语句
三种Statement对象:

  1. Statement:用于执行不带参数的简单sql语句
  2. PreparedStatement:继承Statement,用于执行动态sql语句
  3. CallableStatement:继承PreparedStatement,用于执行对数据库的存储过程的调用

编程题

根据数据库的User表编写User类

package cn.sportcloud.controller;

public class User {
    private int id;
    private String username;
    private String password;
    private String name;
    private String phone;
    //登录状态
    private boolean status;
    //积分
    private int score;
    //会员等级
    private int level;
    private String sex;
    //订单
    private int oid;
    //课程
    private  int cid;

    public User() {
    }

    public User(int id, String username, String password, String name, String phone, boolean status, int score, int level, String sex, int oid, int cid) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.name = name;
        this.phone = phone;
        this.status = status;
        this.score = score;
        this.level = level;
        this.sex = sex;
        this.oid = oid;
        this.cid = cid;
    }

    public int getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public Object setPassword(String password) {
        this.password = password;
        return null;
    }

    public String getName() {
        return name;
    }

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

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public boolean isStatus() {
        return status;
    }

    public void setStatus(boolean status) {
        this.status = status;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    public String getSex() {
        return sex;
    }

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

    public int getOid() {
        return oid;
    }

    public void setOid(int oid) {
        this.oid = oid;
    }

    public int getCid() {
        return cid;
    }

    public void setCid(int cid) {
        this.cid = cid;
    }
}

UserService类

package cn.sportcloud.service;

import cn.sportcloud.controller.User;

public interface UserService {
    public boolean login(User user);

    public boolean register(User user);

    public boolean changePassword(User user);

}

UserServiceImpl类

package cn.sportcloud.service.impl;

import cn.sportcloud.controller.User;
import cn.sportcloud.dao.CommonUse;
import cn.sportcloud.dao.impl.CommonUserImpl;
import cn.sportcloud.service.UserService;
import org.springframework.jdbc.core.BeanPropertyRowMapper;

import java.util.Scanner;

public class UserServiceImpl implements UserService {

    private CommonUse commonUse = new CommonUserImpl();

    @Override
    public boolean login(User user) {
        //向数据库发送请求,判断用户名密码是否正确
        //如果正确修改登录状态status为true
        //如果有任意错误返回error处理,保持status为false
        user.setStatus(false);
        //定义sql语句进行查询
        User user1 =  commonUse.findByUsername(user.getUsername());

        if (user1!=null){
            user.setStatus(true);
            System.out.println("登录成功");
            return true;
        }else {
            System.out.println("用户名或密码错误!");
        }
        return false;
    }

    @Override
    public boolean register(User user) {
        //注册用户名,密码,手机号,性别
        //判断是否已有相同注册用户
        //成功则调用save方法保存用户(写入数据库)
        User user1 = commonUse.findByUsername(user.getUsername());
        if (user1!=null){
            System.out.println("注册失败");
            return false;
        }else {
            System.out.println("注册成功");
            commonUse.save(user);
            return true;
        }
    }

    @Override
    public boolean changePassword(User user) {
        //在知道原始密码的情况下更改密码
        user = commonUse.findByUsername(user.getUsername());
        Scanner scanner = new Scanner(System.in);
        String oldPassword = scanner.next();
        if (oldPassword!=user.getPassword()){
            System.out.println("原始密码错误");
        }else {
            String newPassword = scanner.next();
            user.setPassword(newPassword);
            commonUse.updatePassword(user);
        }
        return true;
    }

}

你可能感兴趣的:(笔记,Java学习,java,开发语言,后端)