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

  • 相关阅读:
    ORACLE删除当前用户下所有的表的方法
    解决Tomcat对POST请求文件上传大小的限制
    Windows下如何查看某个端口被谁占用
    javamail彻底解决中文乱码的方法
    Tomcat通过setenv.bat指定jdk和jre(相对路径)
    Linux nohup命令详解
    shell 重启java 程序
    jstack命令执行报错:Unable to open socket file: target process not responding or HotSpot VM not loaded
    ToStringBuilder.reflectionToString用法
    vue自定义指令+只能输入数字和英文+修改v-model绑定的值
  • 原文地址:https://www.cnblogs.com/holos/p/6558495.html
Copyright © 2011-2022 走看看