zoukankan      html  css  js  c++  java
  • EffectiveJava-4

    一、基本类型优先于装箱基本类型

      Java的基本数据类型也叫做内置类型是java语言本身提供的数据类型,是引用其他类型的基础。Java的基本数据类型分为:整数类型、浮点类型、字符类型、布尔类型这四个类型。而每一个基本类型又各自对应了一个引用类型,称为包装类型,装箱基本类型中对应于int 、double、和boolean的是Integer、Double、Boolean。

      1.基本类型与装箱类型的主要区别:

        (1)基本类型只有值,而装箱基本类型则具有它们的值不同的同一性,即两个装箱基本类型可以具有相同的值和不同的同一性。

        (2)基本类型只有函数值,而每个装箱基本类型则都有一个非函数值,除了它对应基本类型的所有函数值之外,还有个null。

        (3)基本类型通常比装箱类型更节省时间和空间。

      2.对装箱基本类型运用==操作符几乎总是错误的。

      3.当在一项操作中混合使用基本类型和装箱基本类型时,装箱基本类型就会自动拆箱。如果null对象引用被自动拆箱,就会抛出一个NullPointerException异常。

      4.使用装箱基本类型的情景:

        (1)作为集合中的元素、键和值不可以使用基本类型,因此必须使用装箱基本类型。

        (2)在参数化类型和方法中,必须使用装箱基本类型作为类型参数,因为Java不允许使用基本类型。例如,你不能讲变量声明为ThreadLocal<int>类型,因此必须使用ThreadLocal<Integer>代替。

        (3)在进行反射的方法调用时,必须使用装箱基本类型。

     二、通过接口引用对象

      1. 如果有合适的接口类型存在,那么对于参数、返回值、变量和域来说,就都应该使用接口类型声明。这样会使程序更加灵活

    //合理,使用接口作为类型
    Set<Son> SonSet = new LinkedHashSet<>();
    
    //不合理,使用类作为类型
    LinkedHashSet<Son> sonSet = new LinkedHashSet<>();

      2. 如果没有合适的接口存在,完全可以用类而不是接口来引用对象。

      总结:能使用接口就使用接口,若没有合适的接口,就使用类层次结构中提供了必要功能的最小的具体类来引用对象。

    《EffectiveJava》P229~P234,P234~P236

  • 相关阅读:
    php数组
    php数组排序
    php超级全局变量
    php循环
    php函数
    PHP魔术常量
    php面向对象
    static 关键字
    Final 关键字
    内置函数
  • 原文地址:https://www.cnblogs.com/MrZhaoyx/p/11708688.html
Copyright © 2011-2022 走看看