Java基础之数据类型及数据转换

数据类型

整数扩展

  1. 二进制 int i0 = 0b;
  2. 十进制 int i =10;输出10
  3. 八进制 int i2 = 010; 输出8 (0)
  4. 十六进制 int i3 = 0x10; 输出16 (0X)

浮点数扩展

问 :当float f = 0.1f; ,double d = 1.0/10; System.out.println(f==d);

float f1 = 225522222f; float f2 = f+1; System.out.println(f1==f2);
答:第一个输出为flase,第二个输出为true,当超过或等于16777216f的时候,输出都为true

  1. float是有限的,也是离散的,舍入误差,大约 ,接近不等于

    最好用浮点数进行比较

  • 银行业务怎么表示钱? 用BigDecimal类型

字符扩展

char c1= ‘a’; char c2 = ‘中’;

输出强制转换成int类型:

System.out.println((int)c1);//输出是97

System.out.println((int)c2);//输出是20013

  • 所有字符本质都是数字

  • 编码Unicode表 (97 = a) Unicode表能容纳的字符 65536 <2的16次方>

char c3 = ‘\u0061’; 输出是a // U0000 UFFFF

  • 转义字符 比如: \t ‘空格’ \n ‘换行’

布尔值扩展


数据转换

问题: int i = 128; byte b = (byte) i; 输出b的结果

答: 输出结果为-128,原因是byte 类型的取值范围是-128至127,强转为byte类型后,超出了byte取值范围,导致内存溢出了。

  • 强制转换 由高到低

  • 自动转换 由低到高

低 ---------------------------------------------------------> 高

byte,short,char ->int -> long -> float -> double

  • 小数点的优先级高于整数
  • 数据运算中,不同类型的数据转换成同一类型,之后进行运算。

运算问题: int money = 10_0000_0000; int year = 20; 试问 long total = money * year ;是否会造成内存溢出?为什么?

如果是 long total1 = money * (long) year;是否会有内存溢出现象?

​ 答: long total = money * year ;会造成内存溢出,因为超出了int的取值范围,且运算时是先int类型进行运算,运算后再转换成long类型。

total1 = money * (long) year;不会造成内存溢出,因为先转换成long类型,之后再进行运算。

注意点:

  1. 不能对布尔型进行转换;
  2. 不能把对象转换成不相干的类型;
  3. 在高容量转换成低容量的时候,进行强制转换;
  4. 转换时可能存在内存溢出,或精度问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值