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

  • 相关阅读:
    30 字符编码
    Xilinx Vivado的使用详细介绍(3):使用IP核
    Xilinx Vivado的使用详细介绍(1):创建工程、编写代码、行为仿真
    Vivado SDK ,调用math.h函数的时候出现 undefined reference to `xxx' ,解决方案
    Xilinx Vivado的使用详细介绍(4):Zedboard+vivado之流水灯(加SDK)
    xilinx Vivado的使用详细介绍(2):创建工程、添加文件、综合、实现、管脚约束、产生比特流文件、烧写程序、硬件验证
    no.4
    no.5
    关于贪心算法
    关于三角形把平面分成几块的问题
  • 原文地址:https://www.cnblogs.com/holos/p/6558495.html
Copyright © 2011-2022 走看看