• 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

  • 相关阅读:
    1063. Set Similarity
    A1047. Student List for Course
    A1039. Course List for Student
    最大公约数、素数、分数运算、超长整数计算总结
    A1024. Palindromic Number
    A1023. Have Fun with Numbers
    A1059. Prime Factors
    A1096. Consecutive Factors
    A1078. Hashing
    A1015. Reversible Primes
  • 原文地址:https://www.cnblogs.com/MrZhaoyx/p/11708688.html
Copyright © 2020-2023  润新知