javase基础02-数据类型转化、进制转化

1:变量使用的注意事项

                ①、变量定义后可以不赋值,使用时再赋值。不赋值不能使用。

                ②、变量使用时有作用域的限制。

                ③、变量不可以重复定义。

2:数据类型转换(掌握)

         (1)boolean类型不参与转换

         (2)自动类型转化(默认转换)

                   范围小的数据类型值(如byte),可以直接转换为范围大的数据类型值(如int);

                   A:从小到大

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

                   C:byte,short,char之间不相互转换,直接转成int类型参与运算。

        注意:byte、short整数常量再定义时,接受的其实是一个int类型的整数,这个是自己做了一个数据检测,如果不在他们范围内就报错。

                            byte a=125;

         (3)强制类型转换

                   范围大的数据类型值(如int),不可以直接转换为范围小的数据类型值(如byte)

                   A:从大到小

                   B:可能会有精度的损失,一般不建议这样使用。

                   C:格式:

                            目标数据类型变量名 = (目标数据类型) (被转换的数据);

         (4)思考题和面试题:

                   A:下面两种方式有区别吗?

                            floatf1 = 12.345f;

                            floatf2 = (float)12.345;

                   B:下面的程序有问题吗,如果有,在哪里呢?

                            byteb1 = 3;

                            byteb2 = 4;

                            byteb3 = b1 + b2;

                            byteb4 = 3 + 4;

                   C:下面的操作结果是什么呢?

                            byteb = (byte)130;(数据溢出计算)

                   计算机中数据的运算都是补码进行的。

                   而要得到补码,首先要计算出数据的二进制。

                   a:获取130这个数据的二进制。

                            00000000 00000000 00000000 10000010

                            这是130的原码,也是反码,还是补码。

                   b:做截取操作,截成byte类型的了。

                            10000010

                            这个结果是补码。

                   c:已知补码求原码。

                                               符号位              数值位

                            补码:     1                          0000010

                            反码:     1                          0000001

                            原码:     1                          1111110

                   D:字符参与运算(是查找ASCII里面的值)

                            'a'              97

                            'A'              65

                            '0'              48

                            System.out.println('a');

                            System.out.println('a'+ 1);

                   E:字符串参与运算

                            这里其实是字符串的连接(“+”被重载,用作String的拼接符)

                            System.out.println("hello"+'a'+1);

                            System.out.println('a'+1+"hello");

                            System.out.println("5+5="+5+5);

                            System.out.println(5+5+"=5+5");

3:数据的表示

               ①、java中对常量提供了4种表现形式

                       二进制、八进制、十进制、十六进制

               ②、不同进制的组成和表示方法

                       二进制:由0、1组成,以0b开头

                       八进制:由0、1、2-7组成,以0开头

                       十进制:由0、1、2-9组成,默认为十进制

                       十六进制:由0、1、2-9、a-f(大小写均可)组成,以0X开头

               ③、进制转化

                     a、其他---》十进制

                              系数*基数^(权次幂)

                              权:从右向左(从零开始数)

                     b、十进制---》其他

                               除基取余,直到商为零,余数反转。

                     c、十进制---》二进制

                                8421码

                     d、二进制---》八进制、十六进制

                               Ⅰ:先二进制---》十进制,然后再十进制---》八进制、十六进制

                               Ⅱ:折合组合法:

                                          从右往左,每三位用八进制数表示,转化为八进制

                                          从右往左,每四位用十六进制数表示,转化为十六进制

4:有符号数据的二进制表示

            最高位称为符号位,其余位为数值位

            原码:正数的最高位为0;负数的最高位为1

            反码:正数的反码与原码相同;负数的反码与原码符号位相同,数值位取反。

            补码:正数的补码与原码相同;负数的补码是反码的基础上加1

5:字符常量表示

               ①、用英文单引号括起来的单个字符

               ②、用英文单引号括起来的十六进制字符代码值来表示单个字符。格式:‘\uXXXX’,u为约

               定的前缀,XXXX是4位十六进制数,是该字符在Unicode字符集中的序号。

               ③、转义符

               '\t'     制表符     '\n'换行符     '\r'回车符

你可能感兴趣的:(javase基础02-数据类型转化、进制转化)