黑马程序员-JAVA-基本类型与Object分析

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-


java的基本类型

总所周知有8种:byte,char,short,int,long,float,double,boolean,然后加上作为方法返回类型的void,有点难以界定的数组类型,以及万物之父,万物之始Object.
这就是今天要好好了解一下的内容了:

byte,char,short,int,long,这五个是整形,其中char比较特殊,它是无符号的,所以最大值是65535,并且char是字符的映射,可以直接将字符赋值给char,用于计数的情况比较少见。其他4个类型都是含符号的整形,正数和零是原码表示,负数补码表示。在赋值时,支持声明二进制,8进制,10进制和16进制。所以最小(负绝对值最大)值的绝对值比最大值大1.对int以及long类型进行Math.abs(MIN_VALUE)得到的是自身。。这在数学上显然是错误的。这些整形数的特点是可以进行位运算,许多高效率的算法都有赖于此。整形之间可以直接强制转换,当由范围大的类型转为范围小的类型时会直接略去高位。所有整形都可以转换为浮点型。

float和double是带符号浮点数,他们的精度是
float ,1位符号位, 8位指数位,23位尾数位
double,1位符号位,11位指数位,52位尾数位
对于大多数的运算来说,double的精度已经足以满足需要。赋值时,java默认带小数点的数是double类型,可以在数字最后加f表示float类型。 需要注意的是,在浮点运算中,除以0不会像整形一个抛出异常,而是返回一个特殊的结果,正数除以0为Infinity,负数则是-Infinity,0.0/0.0将得到NaN(Not a Number),而且NaN不等于任何数,包括它自身。浮点转为整形有可能溢出而造成巨大误差。

boolean就是常见的布尔类型,作为相对强类型的语言,java不允许使用整形直接作为if、while或者for中的判断条件,必须使用boolean。boolean支持各种逻辑运算,包括与&或|非!异或^,这里与整形的位运算符虽然类型,但不可混为一谈,其中与和或还能用&&、||来进行,区别是后者有短路特性:即前半条件已经足以判断结果那么后半将不参与运算也不会被执行。

void作为方法返回值,仅用于方法无需返回的声明,利用反射可以获得的Type表示它也是Primitive类型。

java的引用类型

Object即引用类型则与Primitive原始类型大相径庭,显著的区别就是:在方法传递中,引用类型是按引用传递的,对方法中引用类型进行修改(不能赋值)其结果会反应到原调用处,而Primitive类型是按值传递,无论如何修改不会影响原调用处,因为java没有类似c#的out参数关键字。

对于所有的基本类型,java都提供了对应的包装类,并且语法上提供了支持(应该是编译器实现)自动装箱和拆箱,为提供更为纯粹的面向对象做了良好的支持。当然相应的由于引用类型的构造相对需要更多资源,效率有所不如。

数组类型是一种特殊的引用类型,而且java中的数组是不要求行列对其的
,因为实际上java中的多维数组实际上是数组引用的数组。
java1.5中的新特性可变参数代替了以前用数组来传递多个相同类型参数,无疑是一大方便,但是在与泛型结合的情况下,必须切记此时Primitive类型数组不能自动装箱变为包装类数组,而是将整个数组作为一个泛型参数传入,这无疑不是期望的结果,必须预先装箱避免此类问题

你可能感兴趣的:(黑马,学习)