final,finally,finalize
发表于|更新于
|总字数:121|阅读时长:1分钟|浏览量:
final
用于声明属性,方法和类, 分别表示属性不可变, 方法不可覆盖, 类不可继承.
finally
是异常处理语句结构的一部分,表示总是执行.
finalize
是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等. JVM不保证此方法总被调用.
文章作者: 烦恼多一点
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 非鱼小站!
相关推荐

2022-07-13
双亲委派模型
类加载器加载类的开放性类加载器(ClassLoader) 是Java语言的一项创新,也是Java语言流行的一个重要原因,在类加载的第一阶段“加载”过程中需要通过一个类的全限定名来回去定义此类的二进制字节流,完成这个动作的代码块就是 类加载器,这一动作是放在Java虚拟机外部去实现的,以便让应用程序自己去决定如何获取所需的类。 虚拟机规范并没有指明二进制字节流要从一个Class文件获取,或者说根本没有指明从哪里获取、怎样获取。这种开放使得Java在很多领域得到充分运用,例如: 从ZIP包中读取,这很常见,成为JAR,EAR,WAR格式的基础 从网络中获取,最典型的运用就是Applet 运用时计算生成,最典型的是动态代理技术,在java.lang.reflect.Proxy中,就是用了ProxyGrenerator.generateProxyClass 来为特定接口生成形式为“*$Proxy”的代理类的二进制字节流 有其它文件生成,最典型的JSP应用,由JSP文件生成对应的Class类 类加载器与类的唯一性类加载器虽然只用于实现类的加载动作,但是对于任意一个类,都需要由它的类加载...

2022-04-20
说说反射的用途及实现
反射的用途Java 反射机制是一个非常强大的功能,在很多的项目比如 Spring,MyBatis 都都可以看到反射的身影。通过反射机制,我们可以在运行期间获取对象的类型信息。利用这一点我们可以实现工厂模式和代理模式等设计模式,同时也可以解决 Java 泛型擦除等令人苦恼的问题。 把”用途”落到具体框架行为上会更直观: Spring IoC:读取 XML/注解中的类名 → Class.forName 加载 → 反射构造器实例化 → 反射 setter/字段注入依赖。没有反射,容器就无法在”不知道具体类”的前提下创建对象 MyBatis:把 ResultSet 的列映射到 POJO 字段、把 #{param} 绑定到方法参数,全靠反射读写属性 JDK 动态代理:Proxy.newProxyInstance 在运行期生成类并转发调用,AOP 的基石 泛型擦除补偿:运行期通过 getGenericReturnType 等取回声明时的泛型信息(Jackson 反序列化 List<User> 就依赖它) 测试与工具:JUnit 反射调用测...

2022-04-23
Session 与 Cookie 区别
Cookie 数据存放在客户的浏览器上,Session 数据放在服务器上。 Cookie 不是很安全,别人可以分析存放在本地的 Cookie 并进行 Cookie 欺骗,考虑到安全应当使用 Session。 Session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用 Cookie。 单个 Cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 Cookie。 这四条是区别清单,但清单回答不了两个更深的问题:Session 为什么需要 Cookie 配合(它们不是对立关系而是协作关系),以及分布式环境下 Session 怎么办。把这两点补上,这个题目才算答完。 本质:HTTP 无状态与状态保持HTTP 是无状态协议:服务器处理完请求就忘记你是谁。但购物车、登录态都需要”记住你”。两种记忆路线: Cookie:把状态记在客户端。服务器通过 Set-Cookie 响应头下发数据,浏览器存储并在后续请求自动携带 Cookie 头 Session:把状态记在服务端。服务器为每个会话创建一块...

2022-04-25
JDBC 流程
向 DriverManager 类注册驱动数据库驱动程序 调用 DriverManager.getConnection 方法, 通过 JDBC URL,用户名,密码取得数据库连接的 Connection 对象。 获取 Connection 后, 便可以通过 createStatement 创建 Statement 用以执行 SQL 语句。 有时候会得到查询结果,比如 select,得到查询结果,查询(SELECT)的结果存放于结果集(ResultSet)中。 关闭数据库语句,关闭数据库连接。 五步流程背下来只要十秒,但每一步背后都有一个”为什么这样设计”:驱动为什么要注册、Statement 三种形态的区别、资源为什么要按序关闭。把这些补齐,JDBC 就从流程变成机制。 完整代码与五步对应// 1. 注册驱动(JDBC4 之后 SPI 自动加载,此行可省略)Class.forName("com.mysql.cj.jdbc.Driver");// 2. 获取连接try (Connection conn = DriverManager.getConn...

2022-04-17
int和Integer有什么区别
int 是 Java 提供的 8 种原始数据类型之一。Java 为每个原始类型提供了封装类,Integer 是 Java 为 int 提供的封装类。 int 的默认值为 0,而 Integer 的默认值为 null,是引用类型,即 Integer 可以区分出未赋值和值为 0 的区别,int 则无法表达出未赋值的情况, Java 中 int 和 Integer 关系是比较微妙的。关系如下: int 是基本的数据类型; Integer 是 int 的封装类; int 和 Integer 都可以表示某一个数值; int 和 Integer 不能够互用,因为他们两种不同的数据类型;

2022-04-19
抽象类和接口有什么区别
参数 抽象类 接口 默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现 实现 子类使用 extends 关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字 implements 来实现接口。它需要提供接口中所有声明的方法的实现 构造器 抽象类可以有构造器 接口不能有构造器 与正常 Java 类的区别 除了你不能实例化抽象类之外,它和普通Java类没有任何区别 接口是完全不同的类型 访问修饰符 抽象方法可以有 public、protected 和 default 这些修饰符 接口方法默认修饰符是 public。你不可以使用其它修饰符。 main 方法 抽象方法可以有 main 方法并且我们可以运行它 接口没有 main 方法,因此我们不能运行它。 多继承 抽象方法可以继承一个类和实现多个接口 接口只可以继承一个或多个其它接口 速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。 添加新方法 如果你往抽象类中添加新的方法,你可以给它...
评论
WalineDisqus
公告
欢迎来到非鱼小站!140+ 篇原创技术文章持续更新,欢迎留言交流~





