个人对JavaGuide上某些知识点做一个小结

本文是对JavaGuide项目中的部分核心知识点进行的小结,包括finally块的特殊情况、序列化与transient关键字、static的使用场景、静态代码块的执行、单例模式的实现方式以及浮点数比较和数据类型的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaGuide是github上的一个五万星的项目,该项目包含java的大部分知识点和面试题

链接:https://github.com/Snailclimb/JavaGuide

1.finally块不会执行的四种情况
    (1)finally语句的第一行发生异常(个人感觉其实第一行是执行了的,只是执行时发生了异常)
    (2)在前面的代码中用了System.exit(int)已退出程序
    (3)程序所在的线程死亡
    (4)CPU关闭
    
2.Java序列化中如果有些字段不想进行序列化,怎么办?
    对于不想进行序列化的变量,使用transient关键字修饰。transient只能修饰变量,不能修饰类和方法
    
3.static关键字主要有以下四种使用场景:
    (1)修饰成员变量和成员方法
    (2)静态代码块
    (3)静态内部类 (static修饰类的话只能修饰内部类)
    (4)静态导包 (用来导入类中的静态资源,1.5之后的新特性)
    
4.静态代码块
    (1)静态代码块在非静态代码块之前执行(静态代码块—非静态代码块—构造方法)
    (2)静态代码块只会被初始化一次(非静态代码块在每new一次就执行一次),通过 [类名].class 获取类对象时不会执行静态代码块
    (3)静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问
    
5.单例模式(参考csdn博客
    (1)饿汉式实现
    (2)懒汉式实现 (线程不安全)
    (3)懒汉式实现 (给过去实例的方法加锁,影响性能)
    (4)双重锁实现,给静态变量加上valatile关键字,同时给方法加锁
    (5)静态内部类实现

6.浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用 equals 来判断。

7.基本数据类型和包装数据类型(阿里开发手册:防止NPE问题)
    (1)【强制】所有的 POJO 类属性必须使用包装数据类型。(当数据库查询的结果为空时,使用基本数据类型自动拆箱会导致NPE)
    (2)【强制】RPC 方法的返回值和参数必须使用包装数据类型。(远程调用结果异常用null表示,0可以被赋予其他含义)
    (3)【推荐】所有的局部变量使用基本数据类型。

8.使用Arrays.asList()是需要注意的两点(JavaGuide中的解释
    (1)传递的数组必须是对象数组,而不是基本类型。(传入基本类型数组会将改数组看做成一个总的对象,达不到转成list类型的目的)
    (2)使用集合的修改方法:add()、remove()、clear()会抛出unsupportedOperationException异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值