Java 中关于基本数字类型的注意事项
局部变量需初始化才能访问
public void test() {
    float n;
    n = n + 1;
}
窄化导致自增异常
short i = 3; i += 1; // 不提升 short i = 3; i = i + 1; //错误,short 提升为 int
隐藏的窄化异常
float n =5; //5.0 float n =5.0; //报错,类型转换异常 (对于浮点数,默认为 double
提升不会发生自增异常,
float n = 3; n = n + 1; //4.0
Math 的 round 方法并不是完全四舍五入。它的实现相当于
(int)Math.floor(a + 0.5f)
示例:
public void test() {
    double f1 = Math.round(3.5);
    double f2 = Math.round(-3.5);
    System.out.println(f1);
    System.out.println(f2);
}
// output:
4.0
-3.0
局部变量问题(方法栈空间的变量所指向的值会被复制一份到栈空间)
case class Person(name: String)
class MyClass {
  var field: Person = Person("lisi")
  def p1(): Unit = {
    val field_ = field
    println(field_)
    changeField()
    println(field_)
  }
  def p2(): Unit = {
    println(field)
    changeField()
    println(field)
  }
  def changeField(): Unit = {
    this.field = Person("wu")
  }
}
object Test {
  
  /**
   * 单独运行 p1,输出:
   * Person(lisi)
   * Person(lisi)
   *
   * 单独运行 p2,输出
   * Person(lisi)
   * Person(wu)
   */
  def main(args: Array[String]): Unit = {
    val myClass = new MyClass()
//    myClass.p1()
    myClass.p2()
  }
}
233
                    
                
                
            
        
浙公网安备 33010602011771号