##一、Java基本数据类型包装类和转义字符
1.Java每个基本类型在java.lang包中都有一个相应的包装类
2.包装类作用:
(1). 提供了一系列实用的方法
(2). 集合不允许存放基本数据类型数据,存放数字时,要用包装类型
().包装类提供了很多方法。
3.这八种包装类所继承的父类不全都相同。
(1).Integer ,Byte,Float,Double,Short,Long都属于Number类的子类,Number类本身提供了一系列的返回以上六种基本数据类型的操作。
(2).Character属于Object子类。
(3).Boolean属于Object子类。
4.装箱与拆箱:
(1).将基本数据类型变成包装类称为装箱。
(2).将包装类的类型变为基本数据类型称为拆箱。
(3).在JDK1.5之后,提供了自动装箱和自动拆箱功能。
例:
5.Java语言提供了一些特殊的转义字符序列:
(1).\n :换行 (0x0a) 、\r :回车 (0x0d) 、\f ;换页符(0x0c) 、\b :退格 (0x08)
(2).\0 :空字符 (0x20) 、\s :字符串 、\t :制表符 、" :双引号 、’ :单引号
(3).\ :反斜杠 、\ddd :八进制字符 (ddd) 、\uxxxx :16进制Unicode字符 (xxxx)
##二、Java数据类型转换
1.类型转换:
(1).强制类型转换(显式类型转换)
1.显式转换需要手动转换从小类型转大类型需要强制转换,也可以利用包装类的静态方法进行转换。
2.整型转换元也可用于显式转换,浮点转换属于隐式转换。
3.其他类型转换为字符串类型基本都通过“String.valueOf”转换。
(2).自动类型转换(隐式类型转换)
1.隐式类型转换在转换过程中经历两次转换,第一次转换由byte类型转换为int类型,第二次由int类型计算后的结果再转换为long类型。
2.char可以进行隐式转换,通过Unicode编码获取“中”字的Unicode对应的编码。
3.转换从小到大是自动转换无精度损失,如从大到小则进行强制转换有精度损失。
4.自动转换规律:
(1).小的类型自动转化为大的类型
(2).整数类型可以自动转化为浮点类型,可能会产生舍入误差
(3).字符可以自动提升为整数
5.强制类型转换会导致溢出或损失精度 :
(1).在把容量大的类型转换为容量小的类型时必须使用强制类型转换 。
(2).浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入。
6.强制转换后导致的内存溢出:
(1).原码:用第一位表示符号,其余位表示值,因为第一位是符号位,所以8位二进制数的取值范围就是[1111 1111,0111 1111]即[-127,127]。
(2).反码:正数的补码反码是其本身,负数的反码是符号位保存不变,其余位取反,如正数1的原码数[0000 0001],它的反码数其本身[0000_0001],-1的原码是[1000_0001],反码是[1111 1110]。
(3).补码:正数的补码是其本身,负数的补码是其反码的基础上+1,例如正数1的原码是[0000_0001],它的反码是其本身[0000_0001],-1的补码数[1111 1111]。
(4).128的二进制值(原码):00000000 00000000 00000000 10000000 128的原码 。
(5).从大的转换成小的,会把多余的去掉所以最终得到的数128的补码-128。
(6).129强制转换的结果是-127,经历了补码计算结果再进行反码。