Java期末复习

1.请列举Java语言中的8种基本数据类型,并说明每种数据类型所占用的空间大小。

答:Java语言的8种基本数据类型有:

        byte字节型,占1个字节;

        short短整型,占2个字节;

        int整型,占4个字节;

        long长整型,占8个字节;

        float单精度浮点型,占4个字节;

        double双精度浮点型,占8个字节;

        char字符型,占两个字节;

        boolean型,表示逻辑值,有true和false两个值,分别占1个字节。

2.什么是方法重载?(overload)

答:方法重载是指在一个类中可以声明多个同名的方法,而方法中参数的个数或者数据类型不一致。调用这些同名的方法时,JVM会根据实际参数的不同绑定到不同的方法。

3.什么是方法重写/覆盖?(override)

答:在继承关系中,子类的方法与父类的某一方法具有相同的方法名、返回类型和参数列表,则称子类的该方法重写或覆盖父类的方法。

4.什么是容器?

答:在Java当中,如果有一个类专门用来存放其它类的对象,这个类就叫做容器

5.什么是事件?

答:当用户在界面上执行一个操作,就会产生一个事件。Java中事件是用来描述不同类型用户操作的对象。

6.什么是事件源?

答:事件源,即产生事件的组件。例如:当在Button上单击鼠标时,会产生一个ActionEvent类型的事件,Button就是事件源。

7.什么是事件监听器?

答:调用事件处理方法的对象。当界面操作事件产生并被发送到产生事件的组件时,该组件将把事件发送给能接受和处理该事件的监听器

8.请简述GUI中实现事件监听的步骤。

答: (1)通过实现ActionListener接口或者继承ActionAdapter类实现一个事件监听器类,并对处理监听动作的方法进行重写;

        (2)创建事件源对象和事件监听器对象;

        (3)调用事件源的addActionLisntener()方法,为事件源注册事件监听器对象

9.线程的生命周期

答:新建、就绪、执行、阻塞、死亡

10.区别:构造方法和普通方法

答: (1)构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。

        (2)普通方法只有在使用的时候才会被调用。

        在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值。

11.匿名内部类的访问

答: (1)匿名内部类与局部类对作用域内的变量拥有相同的访问权限。

        (2)匿名内部类只能访问外部的静态变量 和final修饰的变量

12.区别:继承和多态

答: (1)多态意味着一个对象有着多种形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。简单的说,多态就是使用父类的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。

        (2)继承是指可以使用现有类的所有功能,并在无需重写原来的类的情况下对这些功能进行扩展。子类继承父类中所有的属性和方法,但是对于private的属性和方法,是父类的隐私,所以子类虽然是继承了,但是不能访问这些属性和方法的引用,所以相当于没有继承。

13.区别:抽象类和接口

答: (1)在Java中,使用abstract关键字修饰的类称之为抽象类。抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。

        (2)接口可以说是一种特殊的抽象类,接口中只能定义常量和抽象方法。由于接口的特殊性,在定义时需要使用interface关键字。

14.区别:sleep() 和 wait()

答: (1)调用sleep()方法,正在执行的线程主动让出CPU去执行其他线程,在sleep()方法指定的时间过后,CPU才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep()方法并不会释放锁,即使当前线程使用sleep()方法让出了CPU,但其它被同步锁挡住了的线程也无法得到执行。

        (2)wait()在一个已经进入了同步锁的线程内进行调用,让当前线程暂时让出同步锁,以便其它正在等待此锁的线程可以得到同步锁并运行。当其它线程调用了notify()方法后,调用wait()方法的线程就会解除wait状态,当再次获得同步锁后,程序可以继续向下执行。

15.区别:String和StringBuffer

答: (1)String类是不可变类,即字符串值一旦初始化后就不可能改变。

        (2)StringBuffer是可变字符串类,类似String的缓冲区,可以修改字符串的值。

16.区别:Date和Calender类

答:Date类用来表示某个特定的瞬间,能够精确到毫秒。而在实际应用中,往往需要把一个日期中的年、月、日等信息单独返回进行显示或处理,这个类中的大部分方法都已被标记过时。

        Calender类基本取代了Date类,该类中定义了一系列用于完成日期和时间字段操作的方法。

        Calendar的getTime()方法,getTime()返回一个表示Calendar时间值的Date对象,同时Calendar有一个setTime(Date date)方法,setTime()方法接收一个Date对象,将Date对象表示的时间值设置给Calendar对象,通过这两个方法就可以完成Date和Calendar对象之间的转换。 

17.区别:AWT和Swing 

答: (1)AWT提供了一套与本地图形界面进行交互的接口。AWT 所提供的图形功能是各种通用型操作系统所提供的图形功能的交集。由于AWT 是依靠本地方法来实现其功能的,我们通常把AWT控件称为重量级控件。

        (2)Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充。由于在Swing 中没有使用本地方法来实现图形功能,我们通常把Swing控件称为轻量级控件。

        AWT和Swing之间的基本区别:AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT 的Java程序,其运行速度比较慢。在标准版的Java中则提倡使用Swing。

18.区别:continue和break

答: (1)用break语句可以使流程跳出switch语句体,也可以用break语句在循环结构终止本层循环体,从而提前结束本层循环。只能在循环体内和switch语句体内使用break;当break出现在循环体中的switch语句体内时,只是跳出该switch语句体,并不能终止循环体的执行。若想强行终止循环体的执行,可以在循环体中,但并不在switch语句中设置break语句,满足某种条件则跳出本层循环体。

        (2)continue语句的作用是跳过本次循环体中余下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为仅结束本次循环。continue语句并没有使整个循环终止。

19.区别:throws和throw

答: (1)throws出现在方法函数头;而throw出现在函数体。

        (2)throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。

        两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

20.区别:封装和隐藏

答: 对父类变量封装就是将变量设置为private通过set和get方法获取。

        对父类方法的隐藏就是子类中复写父类的方法,然后实现多态来隐藏。

21.区别:类方法和实例方法

答: (1)类方法是属于整个类,而不属于某个对象。

        (2)类方法只能访问类成员变量,不能访问实例变量,而实例方法可以访问类成员变量和实例变量。

        (3)类方法的调用可以通过类名.类方法和对象.类方法,而实例方法只能通过对象.实例方法访问。

        (4)类方法只能访问类方法,而实例方法可以访问类方法和实例方法。

        (5)类方法不能被覆盖,实例方法可以被覆盖。

22.区别:final和finally

答: (1)final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型。

        (2)finally是异常处理语句结构的一部分,表示总是执行。

23.区别:throws和try-catch

答: (1)throws是表明方法抛出异常,需要调用者来处理,如果不想处理就一直向外抛,最后会有JVM来处理;

        (2)try catch 是自己来捕获别人抛出的异常,然后在catch里面去处理;

一般情况下,第二种情况要好一些,这样可以清楚地看到异常的原因,并加以修正。

24.catch语句中处理异常时,异常之间是否有继承关系,若有关系,父类在子类的后面,若无关系,顺序任意

25.java中有几种方法可以实现一个线程?请举例说明

答:(1)继承java.lang包下的Thread类,重写Thread类的run()方法,在run()方法中实现运行在线程上的代码。

new Thread() {

    public void run(){}

}.start();

(2)实现java.lang.Runnable接口,同样是在run()方法中实现运行在线程上的代码。

new Thread(new Runnable(){

     public void run(){}

}).start()

26.多线程有几种实现方法?同步有几种实现方法

答:多线程有两大实现方法:extends Thread类、implements Runnable接口

(1)继承Thread类,由子类重写run()方法

        自定义子类继承Thread类

        将让线程运行的代码存储到run()方法中

        通过创建Thread的子类对象,创建线程对象

        通过子类调用start()方法,开启线程

(2)实现Runnable接口

        自定义类实现Runnable接口

        将让线程运行的代码存储到run()方法中

        创建Thread类线程对象

        创建自定义类对象,将自定义类对象作为实际参数传递给Thread类的构造函数(为了让线程对象明确要运行的run方法所属的对象)

        调用Thread对象的start方法开启线程,并运行Runnable接口中的run方法synchronized,wait 与notify 都可以实现同步

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java 期末复习资料包括以下几个方面: 1. Java基础知识:掌握Java的基本语法、数据类型、运算符、流程控制语句等。 2. 面向对象编程:掌握Java的面向对象编程思想、类与对象、封装、继承、多态、抽象类和接口等。 3. 异常处理:掌握Java中的异常处理机制,包括异常类的层次结构、异常处理语句(try-catch-finally)、throw和throws关键字等。 4. 集合框架:掌握Java中的集合框架,包括List、Set、Map等集合容器,以及它们的特点和使用方法。 5. IO流:掌握Java中的IO流,包括字节流和字符流,文件操作等。 6. 多线程编程:掌握Java中的多线程编程,包括线程的创建和启动、线程同步、线程间通信等。 7. 数据库编程:掌握Java中的数据库编程,包括JDBC API的使用、连接数据库、执行SQL语句等。 以下是一些Java期末复习资料的推荐: 1. 《Head First Java》:这是一本非常适合初学者入门的Java书籍,内容浅显易懂,同时又不失深度,适合用来巩固Java基础知识。 2. 《Java核心技术》:这是一本全面深入的Java教材,可以帮助你系统地学习Java的各种知识点,适合用来提高Java技能水平。 3. 《Java编程思想》:这是一本讲述Java编程思想和技巧的经典书籍,涵盖了Java的基础知识、面向对象编程、异常处理、集合框架、IO流、多线程编程和数据库编程等方面的内容。 4. MOOC网站上的Java课程:例如中国大学MOOC网站上的《Java程序设计》和Coursera网站上的《Java程序设计与软件工程专项课程》,这些课程都提供了免费的在线学习资源和相关练习。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

`柠七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值