Java数据类型有两类:基本数据类型和引用类型。
基本类型包括boolean类型和数值类型。
数值类型有整数类型和浮点数类型。
整数类型包括byte、short、int、long、char,浮点类型包括float、double。
引用类型包括类、接口、数组类型,还有一个特殊的null类型。
null即空引用,只能被转换为引用类型,不能转换为基本类型,因此不要把null赋值给基本数据类型的变量。
Java语言的浮点型默认是double型,如果希望Java把一个浮点数值当成float处理,应该在浮点数值后紧跟f或F。如:3.14代表的是一个double型的常量,占64位内存空间,而5.12f或5.12F表示一个float型的常量,占32位的内存空间。
Java有三个特殊的浮点数值:正无穷大、负无穷大和非数,用于表示溢出和出错。
一个正数除以0得到正无穷大,通过Double或Float的POSITIVE_INFINITY表示;
一个负数除以0得到负无穷大,通过Double或Float的NEGATIVE_INFINITY表示;
0.0除以0.0或对一个负数开方得到非数,通过Double或Float的NaN表示。
所有正无穷大数值都相等,所有负无穷大数值都相等,而NaN不与任何值相等,甚至和NaN都不等。
只有浮点数运算出现除以0才可以得到正无穷大或负无穷大,如果是整数值运算出现除以0,则会抛出:ArithmeticException:/by zero的异常。
Java里,boolean类型数值只能是true或false,不能用0或非0来代表。其他基本数据类型的值也不能转换成boolean类型。
自动类型转换:
char->int->long->float->double
byte->short->int->long->float->double
Java为8个基本数据类型费别定义了相应的引用类型,称之为基本数据类型的包装类。它们的对应关系:
byte->Byte
short->Short
int->Integer
char->Character
long->Long
boolean->Boolean
float->Float
double->Double
把基本数据类型变量包装成类实例是通过对应包装类的构造器来实现的,如:
boolean b1=true;
Boolean bObj=new Boolean(b1);
除了Character外,还可以通过传入字符串参数来构建包装类对象,如:
Boolean bObj=new Boolean("false");
当试图使用字符串创建包装类对象时,如果传入的字符串不能成功转换成对应的基本类型的变量,则引发java.lang.NumberFormatException异常。而创建Boolean对象时,只要字符串为“true”,不管其大小写的各种组合方式,都会创建true对应的Boolean对象,其他字符,则创建false对应的Boolean对象。
如果想从包装类对象中获取基本类型变量,则可以使用包装类的xxxValue()实例方法,如:
boolean bb=bObj.booleanValue();
int i=iObj.intValue();
从JDK1.5之后,基本类型变量和包装类之间转换变得更加简便,通过自动装箱和自动拆箱来实现两者之间的转换。如:
Integer iObj=5;
int i=iObj;
除了Character外,所有的包装类都提供了一个parseXxx(String s)的静态方法,用于将一个特定的字符串转换成基本类型的变量,如:
String intStr="123";
int i=Integer.parseInt(intStr);
String 类也提供了多个重载的valueOf()方法,用于将基本数据类型转换成字符串,如:
String fStr=String.valueOf(3.14f);