java知识补充

java和c+区别

alt text

继承多态

alt text
alt text

接口中可以实现方法

java8以上添加了default和stastic,private等

深度拷贝和浅拷贝

1.对象指的是另一个类,stirng也算对象
person克隆了一个person,2个的地址不同,比较不相同,但类下的对象是相同的。克隆的是同一个地址

实际上String这种不考虑克隆的问题,因为其建立起就算不可变的。考虑的一般是对象中的对象克隆。
alt text

alt text
alt text
alt text
alt text
常量折叠的知识,编译器回自动优化,但引用类型的值在编译中是无法获得得
alt text

alt text
alt text

1.每次抛出一个new
2.分级要越详细越好
3。抛出的异常信息要有意义
4.避免重复记录日志
alt text

什么是泛型?有什么作用?

alt text
1.泛型类 2.泛型接口 3.泛型方法

反射

alt text

注解

alt text

SPI

alt text
alt text

spi--一个接口的实现方可以有多个,这些是实现方都回返回统一的结果给调用方,这样调用和接口不需要关系实现的多种规则,只需要进行配置的修改。

alt text
某个功能的具体实现可以通过外部的不同jar包进行变化,增加了便利性。
alt text

ServiceLoader 具体实现
alt text

alt text

序列化和反序列化

alt text

alt text
alt text
1.跨语言 2.安全性
alt text

io

流传入的是字节/字符流
alt text
alt text
字节编码可以无视文件编码
alt text
因为不同编码对字符的要求不同
alt text

alt text

比基本的流操作所需要的io操作更少,缓冲流的缓冲区更大,基本流也有缓冲区。并且可以指定大小。
alt text
alt text

BufferedInputStream(字节缓冲输入流)
BufferedReader (字符缓冲输入流)和 BufferedWriter(字符缓冲输出流)
内部维护了一个缓冲区数组。
alt text
alt text

Java IO 流了解吗?

alt text
alt text
使用字符流可以增强速度但是可能回导致乱码的问题,因为将字节翻译位字符需要耗费一定时间。

实现语法糖需要通过一个包下的解糖进行操作
alt text

java只有值传递

就算是对象传入函数,传入的也是值,只是那个值是一个地址。
案列:在main中的地址没变,所以照旧
alt text
好处:更加安全
alt text

序列化

名字和类型必须指定完全就会被jvm扫描到并序列化,指定的。
alt text

反射

通过class获取一个类的方法,名字等信息。平常不用,但对于spring的一些注解注入经常用。@Component
alt text

  1. 获得一个反射对象
    alt text
  2. alt text
    invoke:去调用某一个函数
    alt text

代理

1.静态代理:
在原有的基础上编写扩展的类具有额外的方法
alt text
alt text
2.动态代理
CGLIB :在编译时动态加入到jvm中
2.1 jdk动态代理
alt text
alt text
通过jdk代理调用proxy方法传入类,接口,参数等然后根据这些生成代理类,在去重写invoke方法添加一些逻辑,
常用有拦截器,aop编程。日志记录等操作
alt text
2.2 CGLIB 动态代理机制
alt text
静态因为是一个类,所以会生产class文件,而动态因为是在运行时候被检查到会加入到jvm中。
alt text

BigDecimal 详解

alt text
1.建立的值(需要一个string)
alt text
2.计算中具有第三个参数,可以指定是否要保留小数和除尽
alt text
alt text

网上具有现成打包好的工具包

Unsafe

alt text

posted @ 2025-03-05 21:57    阅读(7)  评论(0)    收藏  举报