1-4 异常-接口和抽象类-socket通信原理-Runtime类-泛型-字节流和字符流

上一篇:
1-3 IO-BIO和NIO和AIO-Select和epoll多路复用

这里是easy的java基础面试
下面是总的阅览:

java基础
java集合
JVM
多线程
mysql_数据库
计算机网络
nosql_redis
设计模式
操作系统
消息中间件activeMq
SSM框架面试题
服务中间件Dubbo

目录

1-异常

1-1异常类型

两种异常: 受检查(checked)异常和不受检查(unchecked)异常。

区别: 不受检查的异常不需要在方法或者是构造函数上声明,就算方法或者构造函数的执行可能会抛出这样的异常,并且不受检查的异常可以传播到方法或者是构造函数的外面。相反,受检查的异常必须要用throws语句在方法或构造函数上声明。

1-2throws和throw区别

throw是指程序中明确的抛出异常,相反throws语句用来表明方法不能处理的异常。每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能确保处理可能发生的异常,多个异常是用逗号分隔开来的。

1-3异常机制

检查式异常: 我们经常遇到的IO异常及时sql异常都是检查式异常。对于这种异常,java编译器要求我们必须对出现的这些异常进行catch。所以面对这种异常不管我们是否愿意,只能自己写一堆catch来捕获这些异常。

运行时异常: 我们可以不处理,当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常(java14已经解决),它就是运行时异常,并且是最常见的一种异常。
UndeclaredThrowableException也是一个 运行时异常,一个场景
项目在测试环境下,不稳定,rpc调用时发生超时,造成TimeOutException ,但是被调用方没有处理这个异常。TimeOutException不是业务方法所声明的异常,因此就被包装成UndeclaredThrowableException抛出了。这是一个RuntimeException。

1-4异常体系

在这里插入图片描述

2-接口和抽象类

2-1区别

类别抽象类接口
构造方法
普通成员无 只能是final常量
非抽象的普通方法无,必须是抽象方法,不能有非抽象普通方法
抽象方法修饰符public protected只能是public abstract
静态方法
静态成员变量有 publicpublic static final 常量
总结一个类可以实现多个接口,但是只能继承一个抽象类

2-2注意几个小点

1. Java抽象类可以有构造函数吗?

可以。但是不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用.(一个调用另一个。)

2. 抽象类可以实现接口? 他们需要实现所有的方法吗?

可以 , 不需要

3. 抽象类可以是fianl的吗?

不可以,Java抽象类不能是fianl的。如果是final,会阻止他们被继承,会报编译时错误。 final证明了完成性

4. Java抽象类可以有static方法吗? 

可以

5. 可以创建抽象类的实例吗?

不可以,因为它们是不完全的----> 不能被实例化,如果会 则会在java编译时发生错误。

6. 抽象类必须有抽象方法吗? 

不需要,抽象类有抽象方法,不是强制性的。abstract 就可以将类声明为抽象类。 编译器会强制所有结构的限制来适用于抽象类。

7. 何时选用抽象类而不是接口? **重要,面试必问**

如果不可能在一个发布的接口中添加一个新方法,用抽象类会更好。

8. Java中的抽象方法是什么?

没有一个方法体的方法。我们仅需声明一个方法,不需定义只加上关键字abstract即可。Java接口中的方法默认为public abstract … 。

9. Java抽象类可以包含main方法吗?

可以,它只是一个静态方法,用main方法可以执行抽象类,但是不能创建任何实例。

3-Socket通信原理

在这里插入图片描述

4-Runtime类

runtime: 运行时,是一个封装了JVM的类。每一个Java程序实际上都是启动了一个JVM进程,每一个JVM进程都对应一个runtime实例,此实例是由JVM为其实例化的。

我们不能实例化一个runtime对象,应用程序也不能创建自己的runtime类实例,但可以 getRuntime 获取当前 Runtime运行时对象的引用。一旦得到一个当前的runtime对象的引用,就可以调用runtime对象的方法来控制Java虚拟机的状态和行为。

public static runtime getRuntime()

5-泛型T 和 ?

? —> N种数据类型
T ----> 同一类多个对象实例 / 基本类型值

如果一个方法show(List<? extends Teacher> alist) Teacher继承于student , student继承于 child ,,那么加入三种 teacher student child对象。
记住: 此方法List只能接受teacher和 student 。 child会自动向上转型为student。
student extends teacher , child extend student。

6-枚举类Enum

https://blog.csdn.net/javazejian/article/details/71333103

7-字节流和字符流

字节流

字符流

InputStreamReader,从字节流---> 字符流,读取字节 经过指定编码方式-->字符流

区别:

分类字节流字符流
操作时不使用缓冲区,与文件本身直接操作使用缓冲区
操作文件时不close,文件也能输出不close,文件不能关闭,证明使用了缓冲区。使用flush强制刷新缓冲区,这样才能在不close()的情况下,文件输出。
read字节返回int,两个字节,0~65535,末尾则返回-1返回int, 一个字节,0~255,末尾则返回-1
处理方式处理字节和字节数组或二进制对象处理字符,字符数组或字符串

下一篇:
1-5 序列化-内部类-待定其他知识

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

下次遇见说你好

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

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

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

打赏作者

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

抵扣说明:

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

余额充值