Java数据类型扩展

在Java数据类型中,浮点数类型有float和double,下面来看一组代码

在一些银行业务中的问题(浮点数拓展):

float f = 0.1f;        //0.1

double d = 1.0/10;        //0.1

System.out.println(f==d);        //false

float f1 = 213546768321321f;

double d1 = f1 + 1;

System.out.println(f==d);        //true

是不是超出了认知,明明变量f和d都是0.1,但输出结果是false;

而f1和d1明显不同,但输出结果却是true.

这一切的原因都是浮点数类型float的特性:有限 离散 舍入误差 大约 接近但不等于

我们得出的结论是:最好完全避免使用浮点数进行比较!

解决方法:使用BigDecimal数学工具类.

字符串拓展:

我们先来看一段代码

char c1 = 'a';
char c2 = '中';
System.out.println(c1);//a
System.out.println((int)c1);//97
System.out.println(c2);//中
System.out.println((int)c2);//20013

得到一个结论:所有的字符本质还是数字!

char字符串涉及到编码问题:

Excel表的长度:2的16次方=65536个;

Unicode表:占用两个字节,65536个,每一个数字对应编码 65=A; 97=a; 20013='中'; 

Unicode中的编码转义表示:U0000~UFFFF;

看一串代码:

char c3 = '\u0061';//61是十进制97的十六进制的表示,与Unicode表对应
System.out.println(c3);//a

转义字符(C语言):

退格符(\b):使当前行的活跃位置后退一个位置.

换页符(\f):使活跃位置跳到下一页的开端.        注:换页符可用于控制打印机换页,但不会导致 PC 机的显示屏换页.

换行符(\n):使活跃位置跳到下一行的开端.

回车符(\r):使活跃位置返回当前行的开端.

水平制表符(\t):使活跃位置移动若干个位置(通常8个).

垂直制表符(\v):使活跃位置换若干行.        注:\v可用于控制打印机换若干行,但是不会导致PC机的显示屏换行。

转义字符(Java):

\x 十六进制 后面跟两位,则表示单字节编码
\0 八进制
\d 十进制
\u Unicode码,一般后面跟四个十六进制数
\r 回车
\n 换行
\f 走纸换页
\t 横向跳格

留下两个问题:

字符串拓展:

String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);//false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);//true

为什么跟我们想象的不一样呢,可以从内存的角度思考一下!

再来一个布尔值的扩展:

boolean flag = true;
if (flag==true){}
if (flag){}

这两种写法本质上是一样的,你是怎么写的呢?

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值