A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

day02

1. 进制转换问题。
        1)其他进制到十进制的转换。
                系数乘以基数的权次幂, 结果相加。
        2)十进制转换到其他进制。
                除以基数 取余数 直到商为0, 余数反转
        3)源码、反码、补码。
                正数:原码 反码 补码 都一样
                负数:反码 -- 原码符号位不变,其他位取反
                          补码 -- 反码+1。

2. 数据类型。
        1)整数型 byte        1个字节                2)浮点型 float  4个字节        3)字符型 char  2个字节
                          int        4个字节                                  double 8个字节
                      long        8个字节
        4) A: 整数默认是int类型。long类型需要加L或者l后缀。
                B: 浮点数默认是double类型。float类型需要加F或者f后缀。
               
3. 数据类型转换。
        1) boolean类型不参与转换。
        2) 隐式转换(从小到大)
                byte,short,char -- int -- long -- float -- double
        3) 强制转换(从大到小)
                格式:
                        (数据类型)数据;
                练习:
                        byte b = (byte) 300; // 44不会报错
                        byte by = (byte)130; // -126
                        计算机中都是用补码进行存储和运算的.
                        130 二进制
                                00000000 00000000 00000000 10000010
                                补码:
                                00000000 00000000 00000000 10000010
                                做强制类型转换, 截取后8位,得到是补码.
                                补码:
                                        10000010
                                反码:
                                        10000001
                                原码:
                                        11 11 1110  14+48+64
                                这个数的十进制是 -126
                       
        4)关于byte面试题:
                byte b1 = 3;
                byte b2 = 4;
                byte b3 = b1 + b2; // 此行会报错,因为参与运算的byte类型会自动提升为int类型, 可能损失精度.
                byte b4 = 3 + 4; // 不报错,对于字面值常量3和4, jvm会在编译期对其进行计算(优化), 并比较其值是否在byte范围内,如果未超出,则不报错.
       
4. 算数运算符++运算。
               
        int a = 5;          
           a = a++; //在运算的时候a会先保留一个副本,然后自增,然后将副本的值赋值给左边。
        System.out.println(a);  //结果是5。       
5.赋值运算符+=问题。

        short s = 20;
               
                s += 10;等价于 s = (short)(s+10);  //因为+=这种运算符,内含了强制类型转换功能。
                s = s + 10;  //错误可能会损失精度,s + 10在计算的时候类型先提升为int类型,需要强转为short类型。
       

1 个回复

正序浏览
不明觉厉   不明觉厉   不明觉厉
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马