Java中一些琐碎的细节的总结(1)--基本语法

本文详细介绍了double类型相对于float的存储优势,有效数字的提升以及为何被称为双精度浮点数。还讨论了浮点数舍入误差在金融计算中的问题,并列举了一些Java编程中的实例,如转义字符u的用法和类型转换注意事项。

自动生成文档注释

这种注视以 /** 开始,以 */ 结束。

double被称作双精度浮点数的原因

类别存储要求取值范围
float4bytes大约±3.40283247E+38F(有效数字6~7位)
double8bytes大约±1.79769313486231570E+308(有效数字15位)

double的有效数字大约是float的两倍,因此被称作双精度浮点数。

2.0-1.1=0.899999?

浮点数不适用禁止出现舍入误差的金融计算,因为浮点数值采用二进制系统表示,而二进制系统中无法精确的表示分数1/10,就好比十进制无法精确的表示1/3一样。

转义字符\u

转义序列符通常都可以出现在字符常量或者字符串的引号内,比如’\u2122’或者"Hello\n",特别的有转义字符序列\u还可以出现在引号之外,例如

public static void main(String\u005B\u005D args)

这种形式是完全符合语法规则的,\u005B和\u005D分别为[和]的编码。

Java中整型值和布尔值之间不能进行相互转换

关键字final修饰常量

final修饰的常量只能被赋值一次,且被赋值之后无法被修改,通常用全大写的常量来表示。

Math类中的round()方法

对浮点数进行运算,得到一个最接近浮点数的整数,但是返回的是long类型,仍需强制类型转换
例如

double x=9.99;
int n=(int)Math.round(x);//n的值为10

注意 如果试图将一种类型转换成另一种类型,但是超过了类型的范围,则会得到一个意想不到的值,比如
(byte)300的值为44

检测字符串相等,且不用区分大小的方法

equalsIgnoreCase

"Hello".equalsIgnoreCase("hello");

注意 ==操作去判断字符串是否相等可能造成难以想象的错误情况。如果虚拟机始终将相同的字符串共享那当然没问题,可以使用==,但是事实上只有字符串常量是共享的,而由+或者substring等操作得到的结果并不是共享的,因此可能出现这样的情况

String t1="Hello";
boolean bn=(t1.substring(0.3)=="Hel");//bn为flase

StringBuffer和StringBuilder的区别

前者效率比后者略低,但是支持多线程的方式去执行添加或者删除字符的操作,如果所有字符操作都是在单线程在编写的,那么应该采用后者去代替它,这两个类的API都是相同的。

格式化输出

这里只强调这种情况:对于有限个给出的参数的重复调用的使用方式
1.%index$s 格式

System.out.print("%1$s %2$tB %2$te %2$tY","Due Date:",new Date();

2.<标志再次调用

System.out.print("%s %tB %<te %<tY","Due Date:",new Date();

带标签的break和continue

label(标签后面)跟着冒号,break跳出标签所在最外层的语句块,continue跳到标签最近的语句块首部。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值