Java解惑-笔记

本文介绍了Java编程中的一些实用技巧,如使用BigDecimal进行精确的浮点数运算、长整型运算中的常量标记、基本类型的转换规则等。此外,还讨论了一些常见的编程陷阱,例如条件表达式的类型提升规则、字符串拼接时的注意事项、随机数生成区间问题及如何避免除零异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 奇数性:i & 1 !=0 判断方式更高效,排除了负奇数判断错误的问题。
  • 浮点数运算:使用BigDecimal(string)的方式来进行运算,避免数据被截断。
  • 长整型运算:常量显示使用L来标志,避免数据移除。
  • 十六进制&八进制的符号:两种进制只要最高位非0,即为负数,运算时注意符号。
  • 基本类型转换:窄化类型转换-保留低位;宽化类型转换-高位扩展(保留原始符号)
  • 两数交换:a=a^b; b=a^b; a=a^b,Java中避免使用连续赋值。
  • 条件表达式类型提升:常量->byte->int->char->long。
    char x = 'X';
    int i = 0;
    System.out.println(true ? x : 0); //X
    System.out.println(false ? i : x);//88
  • 复合赋值符号:E1 op=E2 等价于 E1=(T)((E1)op(E3)),T为E1的类型。所以存在一个隐式的类型转换
  • 字符串拼接:”“+”“; ”+”表示的是字符相加运算。
  • 正确输出结果:+ 操作符,不论是用作加法还是字符串连接操作,它都比 == 操作符的优先级高。下面只会输出true/false :

    System.out. println("Animals are equal:"+ pig == dog);

    等价于:

    System.out.println(("Animals are equal: " + pig) == dog);

  • 良好的JavaDoc:如果一个\u字符存在而在他后面不存在四个十六进制的数字,编译器将拒绝编译。

  • String.replaceAll()第一个参数接受的是正则表达式,在使用的时候需要注意;第一个参数中存在反斜杠会将其后面的字符转义掉。在Windows平台上面File.separator()是一个’\’使用的时候,会将其后面的字符转义。使用:Matcher.quoteReplacement(File.separator)是一个不错的替换
  • 栅栏柱错误:Random.nextInt(2)总会返回[0,n) 之间的整形数字,但是不包括n.
  • Double.NaN的使用可以避免出现除数为0的异常(ArithmeticException)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值