Java基础拾遗(一)

  1. 在一个源文件中,只能有一个公有类,但可以有任意数目的非公有类。
  2. final关键字修饰对象变量,引用关系不会改变,但引用的对象本身可以改变。
  3. 如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的两个很有用的类:BigInteger和BigDecimal。这两个类可以处理包含任意长度数字序列的数值。BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。
  4. Java程序设计语言对对象采用的不是引用调用,实际上,对象引用是按值传递的。·一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。·一个方法可以改变一个对象参数的状态。·一个方法不能让对象参数引用一个新的对象。
    即当一个对象作为参数传入一个函数时,是将引用指针复制进方法,方法内再用指针去堆里找个这个对象,方法是可以改变这个对象的状态。在方法体内更换对象引用,不会影响到方法体外的对象。因为对象引用是按值传递的,方法内只是复制了指针进来。
  5. 如果在构造器中没有显式地给域赋予初值,那么就会被自动地赋为默认值:数值为0、布尔值为false、对象引用为null。
  6. 如果类中提供了至少一个构造器,但是没有提供无参数的构造器,则在构造对象时如果没有提供参数就会被视为不合法。
  7. 如果子类的构造器没有显式地调用超类的构造器,则将自动地调用超类默认(没有参数)的构造器。如果超类没有不带参数的构造器,并且在子类的构造器中又没有显式地调用超类的其他构造器,则Java编译器将报告错误。
  8. 不允许扩展的类被称为final类。如果在定义类的时候使用了final修饰符就表明这个类是final类。
  9. 应该养成这样一个良好的程序设计习惯:在进行类型转换之前,先查看一下是否能够成功地转换。这个过程简单地使用instanceof操作符就可以实现。
  10. 10.1)仅对本类可见——private。2)对所有类可见——public。3)对本包和所有子类可见——protected。4)对本包可见——默认,不需要修饰符。
  11. 尖括号中的类型参数不允许是基本类型,也就是说,不允许写成ArrayList。这里就用到了Integer对象包装器类。我们可以声明一个Integer对象的数组列表。
  12. 由于包装器类引用可以为null,所以自动装箱有可能会抛出一个NullPointerException异常。
  13. 如果在一个条件表达式中混合使用Integer和Double类型,Integer值就会拆箱,提升为double,再装箱为Double。装箱和拆箱是编译器认可的,而不是虚拟机。编译器在生成类的字节码时,插入必要的方法调用。虚拟机只是执行这些字节码。
  14. 在比较两个枚举类型的值时,永远不需要调用equals,而直接使用“==”就可以了
  15. Class类中的getFields、getMethods和getConstructors方法将分别返回类提供的public域、方法和构造器数组,其中包括超类的公有成员。Class类的getDeclareFields、getDeclareMethods和getDeclaredConstructors方法将分别返回类中声明的全部域、方法和构造器,其中包括私有和受保护成员,但不包括超类的成员。

你可能感兴趣的:(java)