一:String对象举例
//这是一个极其错误的做法,浪费系统资源
String s = new String("stringette");
以上的做法属于极端的反例,在上述代码被频繁调用时,每次执行都会调用new String("stringette"),创建一个新的实例,浪费资源
String s = "stringette";
这是一个改进的例子,多次执行这一句代码也只存在一个实例.
有一个经典的问题:下面两种方式的String初始化,分别创建了几个对象?
//第一种方式
String a = new String("CSDN");
String b = new String("CSDN");
//第二种方式
String m = "CSDN";
String n = "CSDN";
在我的理解中:在第一种方式两条语句new String()都分别创建了一个对象,而"CSDN"创建了3个. 第二种方式则只创建了"CDSN"一个对象.这是为什么呢?
在JAVA虚拟机(JVM)中存在一个常量池,当常量池中已经查找到"CSDN"存在时,就会直接返回对象而不会重新创建,这个判断是通过"=="判断的,而new String()通过"=="判断是"false"的,要重新创建对象的.
二:重用已知的不会被修改的可变对象
这一部分我的理解就是,当写完解决方案后,要注意思考是否有优化方式,有一些不会改变的对象是不是可以创建成static的形式,以减少性能的损耗.
三:在非必要的情况下,要优先使用基本类型,而不是装箱基本类型
装箱类型是通过一个类包了基本类型,装箱类型的创建消耗要比基本类型高一些.
在与数据库连接时需要使用装箱类型,因为当一个值为空时,不能够给数据库传一个默认值,这是错误的.