Java 初始化与清理

简介: Java 初始化与清理

说实话,关于《JAVA编程思想》中“初始化与清理”章节,我细致看完后,感觉若无所获,让我大失所望,姑且记录在本博客中,是因为希望未来一天再读关于“初始化”、“清理”的时候能够大彻大悟。


一、以返回值区分重载方法


我曾经就干过这样的傻事,项目中我们经常会编写自己的DateUtils包,来转换各种日期格式。


int getFromDate(Date date){
}
long getFromDate(Date date){
}


例如上面这串代码,本意是想通过一个方法名getFromDate来获得日期的long时间戳(13位)或者int时间戳(10位),我原来总觉得这样的写法,编译器应该认为是合乎情理的,但编译器是不通过的。

需要改成这样的写法:


int getIntFromDate(Date date){
}
long getLongFromDate(Date date){
}


有时你并不关心方法的返回值,你想要的是方法调用的其他效果。

所以这种情况下,针对getFromDate方法,编译器就不知道你要调用哪一个?



所以,返回值区分重载方法是不可行的。


二、this和static


本来这个小节,我是很感兴趣的,对于这两个关键字,王二一直没有“深入浅出”,以后还需再总结。


三、垃圾回收


Bruce花费了大量的文字来介绍java的垃圾回收机制,无论是“标记-清扫”,还是“停止-复制”,我都没有看明白,没有大彻大悟,实在抱歉,只恨自己脑瓜郁闷。


四、初始化


记得看尚学堂马士兵的视频,或者魔乐科技的李兴华老师视频时,都会花一定的时间介绍java类在初始化时的顺序,今天再次重温了一遍,但依然没啥感觉,不做深究。


①、可变参数列表


可变参数列表其实是很有用的,尤其是在做sql语句的变量赋值时。


public void fillStatement(PreparedStatement pst, Object... paras) throws SQLException {
    for (int i=0; i<paras.length; i++) {
        pst.setObject(i + 1, paras[i]);
    }
}


拼预处理sql语句时,我们基本上都会使用“?”来代替参数,然后将参数放在可变参数paras中,这是非常好用的做法。


②、枚举类型


王二觉得,枚举并没有发挥其原本想要的作用,至少现在看来,枚举在使用过程中还是略显疲态,不过有一个很重要的地方用枚举就特别给力,那就是单例。


public enum Single {

INSTANCE;

}


非常简洁

无偿提供序列号机制

绝对防止多次实例化

这三点在《effective java》中已强烈推荐,实现singleston的最佳方式!关于singleston,还有很多其他的版本,你可以参阅深入浅出单实例Singleton设计模式,非常详细。


本篇我并没有学到太多的至少,水平有限,只能一点一点来,如果你是大神级别的,请自动过滤!


相关文章
|
存储 Java C++
Java数组:静态初始化与动态初始化详解
本文介绍了Java中数组的定义、特点及初始化方式。
1229 12
Java 静态变量的初始化顺序
【10月更文挑战第15天】了解 Java 静态变量的初始化顺序对于正确编写和维护代码至关重要。通过深入理解初始化顺序的原理和细节,我们可以更好地避免潜在的问题,并提高代码的质量和可靠性。
|
Java 编译器
java“变量 x 可能未被初始化”解决
在Java中,如果编译器检测到变量可能在使用前未被初始化,会报“变量 x 可能未被初始化”的错误。解决方法包括:1. 在声明变量时直接初始化;2. 确保所有可能的执行路径都能对变量进行初始化。
1344 2
|
Java 编译器
【一步一步了解Java系列】:子类继承以及代码块的初始化
【一步一步了解Java系列】:子类继承以及代码块的初始化
441 3
|
Java
java构造方法时对象初始化,实例化,参数赋值
java构造方法时对象初始化,实例化,参数赋值
464 1
|
安全 Java 关系型数据库
Java连接Mysql SSL初始化失败
Java连接Mysql SSL初始化失败
|
存储 Java 编译器
如何在 Java 中初始化对象 Arraylist?
【8月更文挑战第23天】
732 0
|
存储 Java
如何在 Java 中初始化二维 ArrayList
【8月更文挑战第23天】
532 1
|
存储 Java 开发工具
【Azure Developer】VS Code运行Java 版Azure Storage SDK操作Blob (新建Container, 上传Blob文件,下载及清理)
【Azure Developer】VS Code运行Java 版Azure Storage SDK操作Blob (新建Container, 上传Blob文件,下载及清理)
276 0
|
Java Spring
Java SpringBoot Bean InitializingBean 项目初始化
Java SpringBoot Bean InitializingBean 项目初始化
483 0