Day5:Java数据类型的扩展6.9

总目标:学会JAVA
本周目标:Java的入门知识(6.5——6.12)
今日目标:
1. Java基础语法学习(2)
2. Java面试中数据类型的知识及思考(6.9)


整数扩展

进制

  1. 二进制:0b

  2. 十进制

  3. 八进制:0

  4. 十六进制:0x

    //以10来举例
    public class Demo04 {
        public static void main(String[] args){
            //整数拓展:  进制   二进制0b  十进制   八进制0  十六进制0x
            int i  = 0b10;//二进制的10
            int i1 = 10; //十进制的10
            int i2 = 010;//八进制的10:0
            int i3 =0x10;//十六进制的10:0x 0~9 A~F 16
            System.out.println(i);
            System.out.println(i1);
            System.out.println(i2);
            System.out.println(i3);
            System.out.println("==========================================");
    

运行结果分别是2 10 8 16

浮点数拓展

思考问题银行业务是否可以用浮点型来表示?

要使用BigDecimal数学工具类

为什么?

//为什么不相等?
    float f = 0.1f;//f=0.1
    double d = 1.0/10;//d=0.1
    //返回为false
    System.out.println(d==f);//==是布尔型判断是否相等
    System.out.println(d);
    System.out.println(f);
//输出结果false 0.1   0.1
//为什么相等?
     float d1 = 23121312121212312f;
     float d2 = d1+1;
     System.out.println(d1==d2);//为什么+1后还相等
//输出结果为true
    System.out.println("==========================================");

原因是转换过程中可能导致溢出或损失精度

  1. float,double;有限 离散 舍入误差 大约 接近但不等于;

  2. 最好完全避免使用浮点数进行比较

  3. 最好完全避免使用浮点数进行比较

  4. 最好完全避免使用浮点数进行比较

自动类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

转换从低级到高级。

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

数据类型转换必须满足如下规则:

  1. 不能对boolean类型进行类型转换。

  2. 不能把对象类型转换成不相关类的对象。

  3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

  4. 转换过程中可能导致溢出或损失精度,例如:

int i =128;   
byte b = (byte)i;

因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

  1. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23;        
(int)-45.89f == -45

字符与字符串

  1. 字符char:
    • ​ char 类型是一个单一的 16 位 Unicode 字符;
    • ​ 最小值是 \u0000(十进制等效值为 0);
    • ​ 最大值是 \uffff(即为 65535);
    • ​ char 数据类型可以储存任何字符;
    • ​ 例子:char letter = ‘A’;。

结论:所有的字符本质还是数字

编码 Unicode 2字节 最大值65536 原始版Excel 最大行列为 2 16 = 65536

char c3 = '\u0061';
System.out.println(c3);//输出a
//转义字符
// \t 制表符
// \n 换行
System.out.println("Hello\tWorld");//输出Hello    World \t相当于TAB键
System.out.println("==========================================");

常用的转义符

符号字符含义
\n换行 (0x0a)
\r回车 (0x0d)
\f换页符(0x0c)
\b退格 (0x08)
\0空字符 (0x0)
\s空格 (0x20)
\t制表符
"双引号
单引号
\反斜杠
\ddd八进制字符 (ddd)
\uxxxx16进制Unicode字符 (xxxx)
  1. 字符串
String sa = new String("hello World");
String sb = new String("hello World");
System.out.println(sa==sb);
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);
System.out.println("==========================================");

输出结果

false
true

为什么同样都是字符串hello world ,第一组不相同,第二组相同;要从对象 内存分析

布尔值扩展

boolean:

  • boolean数据类型表示一位的信息;
  • 只有两个取值:true 和 false;
  • 这种类型只作为一种标志来记录 true/false 情况;
  • 默认值是 false;
  • 例子:boolean one = true。
boolean flag = true;
//相当于if(flag==true) less is more
if (flag){
    System.out.println("Less is more!");

学习总结

学习了解数据类型中整数型、浮点型、字符型、布尔型的特性,在使用中的注意点。
整数型与浮点型转换过程中精度损失和内存溢出问题,注意在使用中选择合适的数据类型,浮点型尽量避免使用float型,最好完全避免使用浮点数进行比较。注意整数型数字进制的表示,和使用位置。注意字符赋值符号**’** 字符**’**, 字符串赋值符号 " 字符串 ",转义符== \ ==的方向。布尔值未赋值时是默认值fals。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值