局部变量需初始化才能访问

  1. public void test() {
  2. float n;
  3. n = n + 1;
  4. }

窄化导致自增异常

  1. short i = 3;
  2. i += 1; // 不提升
  3.  
  4. short i = 3;
  5. i = i + 1; //错误,short 提升为 int

隐藏的窄化异常

  1. float n =5; //5.0
  2. float n =5.0; //报错,类型转换异常 (对于浮点数,默认为 double

提升不会发生自增异常,

  1. float n = 3;
  2. n = n + 1; //4.0

 

Math 的 round 方法并不是完全四舍五入。它的实现相当于

  1. (int)Math.floor(a + 0.5f)

示例:

  1. public void test() {
  2. double f1 = Math.round(3.5);
  3. double f2 = Math.round(-3.5);
  4. System.out.println(f1);
  5. System.out.println(f2);
  6. }
  7.  
  8. // output:
  9. 4.0
  10. -3.0

局部变量问题(方法栈空间的变量所指向的值会被复制一份到栈空间)

  1. case class Person(name: String)
  2.  
  3. class MyClass {
  4. var field: Person = Person("lisi")
  5.  
  6. def p1(): Unit = {
  7. val field_ = field
  8. println(field_)
  9. changeField()
  10. println(field_)
  11. }
  12.  
  13. def p2(): Unit = {
  14. println(field)
  15. changeField()
  16. println(field)
  17. }
  18.  
  19. def changeField(): Unit = {
  20. this.field = Person("wu")
  21. }
  22. }
  23.  
  24. object Test {
  25.  
  26. /**
  27. * 单独运行 p1,输出:
  28. * Person(lisi)
  29. * Person(lisi)
  30. *
  31. * 单独运行 p2,输出
  32. * Person(lisi)
  33. * Person(wu)
  34. */
  35. def main(args: Array[String]): Unit = {
  36. val myClass = new MyClass()
  37. // myClass.p1()
  38. myClass.p2()
  39. }
  40.  
  41. }

233

Java 中关于基本数字类型的注意事项的更多相关文章

  1. Java 中要将 String 类型转化为 int 类型

    在 Java 中要将 String 类型转化为 int 类型时,需要使用 Integer 类中的 parseInt() 方法或者 valueOf() 方法进行转换. 例1: 1 2 3 4 5 6 S ...

  2. java操作Excel处理数字类型的精度损失问题验证

    java操作Excel处理数字类型的精度损失问题验证: 场景: CELL_TYPE_NUMERIC-->CELL_TYPE_STRING--->CELL_TYPE_NUMERIC POI版 ...

  3. Java中String转换Double类型 Java小数点后留两位

    Java中String转换Double类型 double num1 = 0.0; String qq = "19.987"; num1 = Double.valueOf(qq.to ...

  4. 在JAVA中怎么比较Double类型数据的大小

    在JAVA中怎么比较Double类型数据的大小  我来答  浏览 33044 次   3个回答 #活动# “双11”答题活动,奖励加码!最高得2000元购物礼金! pollutedair 2015- ...

  5. java 中使用ajax调用后台方法注意事项

    java 中使用ajax调用后台方法注意事项,后台方法一定要加@ResponseBody jQuery.validator.addMethod("checkRuleName",fu ...

  6. JAVA中的基本数类型据

    一.基本类型​ byte: java中最小的数据类型.1字节/8位.-128(2^7)~127(2^7-1),默认值0. short: 短整型,2字节/16位,取值范围-32768(--2^15)~3 ...

  7. java中字符串与数字的互相转换

    import java.text.DecimalFormat; /* * String类中本身提供方法可以将几乎所有的基本类型转换为String类型 * sysout alt+/ 可以直接显示Syst ...

  8. Java中包装类型和基本类型的使用场景(什么时候使用包装类型)(转)

    说明:最简单的理解,基本类型有默认值,而包装类型初始为null.然后再根据这两个特性进行分业务使用,在阿里巴巴的规范里所有的POJO类必须使用包装类型,而在本地变量推荐使用基本类型. Java语言提供 ...

  9. java 中的resultset的类型

    结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等. 结果集读取数据 ...

随机推荐

  1. 【转载】C++ vector的用法

    http://www.cnblogs.com/Nonono-nw/p/3462183.html

  2. 小程序图片转Base64

    在小程序中,有些业务要用到 图片的 base64 wx.chooseImage({ success: res => { wx.getFileSystemManager().readFile({ ...

  3. [物理学与PDEs]第3章第1节 等离子体

    1.  磁流体力学研究等离子体这种导电流体在电磁场中的运动. 2.  任何物质由于 $T, p$ 等条件的不同而可以处于固态.液态.气态 (常见的三种聚集态) 或等离子体. 3.  等离子体就是电离气 ...

  4. tangent space与object space

    3d渲染每个网格(Mesh)的面都可配一个材质(Material),要想在一个面上显示出更多的细节,除了模型做的更精致,还可以使用法线贴图(Normal Texture). 法线向量(Normal V ...

  5. sql 发送邮件

    一.启用Database Mail XPs功能. 查看Database Mail XPs功能是否打开,从返回结果来看,value为0说明没有打开,注意SQL Mail XPs是SQL Server早期 ...

  6. 线程的start方法和run方法的区别

    run方法及结果 public class MyThread extends Thread { @Override public void run() { System.out.println(&qu ...

  7. FTP:mget匹配文件名后下载

    需求:从FTP某目录取每日构建的apk下载到本地 难点:文件名中有构建时间,而这个时间不算固定值,因此文件名不固定 解决方案:mget匹配文件名后下载 BAT版本: :: Filename:Proje ...

  8. bzoj2733 永无乡 splay树的启发式合并

    https://vjudge.net/problem/HYSBZ-2733 给一些带权点,有些点是互相连通的, 然后给出2种操作,在两点间加一条边,或者询问一个点所在的连通块内的第k小值的编号 并查集 ...

  9. MariaDB:SSL配置

    参考文章:https://blog.csdn.net/johnhill_/article/details/72831932 ,谢谢! 1.安装openssl 下载地址:http://slproweb. ...

  10. java接口自动化基础知识(一)

    一.TestNG+MySQL+MyBatis实现对测试用例数据的读取 本篇文章讲解TestNG+MySQL+MyBatis+ExtentReports实现对测试用例数据的读取,下面放出所有配置文件的目 ...