zoukankan      html  css  js  c++  java
  • java基础语法中容易出错的细节

    1 java中的数字默认类型为int

    **容易出现类型转换错误

    long 定义的数字后面必须有 “l” “L”

    float 定义的数字后面必须有 “f” “F”

      java中比int表述范围大的数,不会自动转出其他类型。所有必须要指定。

      如果数字比int表述范围小,会在赋值的时候自动转换。

    2 boolean值不能为null

    也不能用0或非0赋值boolean定义的变量,这和c语言不太一样。

    3 类型转换

    long型占8个字节,而float占4个字节,而long自动转float是可以的。大类型转小类型的特例。

    byte转char是从小到大,但是要强制转换。

    4 “+”号的重载

    “+”号遇到字符串会重载为连接符。如   “5+5=”+5+5 -------> 5+5=55

                      5+5+"=5+5"  -------> 10=5+5

                      'a'+5+5     ----------> 107           char实际上还是int,所以不存在运算符重载。

    5 模运算的符号问题

    模运算的符号只取决于被模数的符号。和模数的符号没有关系。

    6 位运算中需要注意的点

    byte b= 127;

    byte b2= (byte)(b+1);-------->结果为-128。如果直接把128赋值给b2,就会报错!

    需要注意的是。位运算之后,结果为int值。强转之后可能会造成截断错误。

    例如:        byte b1 =-9;
               byte b2 = (byte) (b1>>>3);
               System.out.println(b2);

    (b1>>>3)-->结果是int,所移的也是int  ,强转之后,把移位所补的0截取丢掉了。剩下的值为-2.

    总结:

      符号位扩展和移位操作总是发生在32位,计算机会默认将小值自动转换成int,所以对第7位为0的byte值进行无符号操作是没有意义的,在实际运算时,是对扩展后的32位int进行操作的。

    7 +=的特点

    保持类型不变。如上面的代码 byte b2= (int)(b+1) 等号右边加1后会转为int型。而如果使用+=就跳过了数值运算结束默认转int的机制。

    8 i++ 与 (i++)是一样的。

    不要被括号迷惑!!!

    9 三元运算符

      1.?后面的语句必须有返回值。

      2.?后面两个语句返回值类型必须相同。如果不同,那么会无法判断三元运算符的返回值!

  • 相关阅读:
    2017.9.15 HTML学习总结---表格table
    2017.9.14 HTML学习总结---超链接标签图片标签
    2017.9.13 微机原理学习总结(一)
    2017.9.12 初入HTML -----学习总结(二)
    2017.9.11 初入HTML学习
    【死磕Java并发】-----Java内存模型之happens-before
    Java并发编程:volatile关键字解析[volatile最好的文章]
    【框架】[MyBatis]DAO层只写接口,不用写实现类
    MyBatis结果集处理,中resultType和resultMap的区别
    浅谈 Mybatis中的 ${ } 和 #{ }的区别
  • 原文地址:https://www.cnblogs.com/holos/p/6558495.html
Copyright © 2011-2022 走看看