java数据类型

来源:互联网 发布:科比与詹姆斯数据对比 编辑:程序博客网 时间:2024/06/06 03:22

java数据类型

java语言支持的类型分为两类:基本类型和引用类型。基本类型有八种,引用类包括类,接口,数组类型和特殊的null类型。

JAVA基本数据类型一共八种,分为两大类——boolean类型和数值类型。而数值类型又分为整数类型和浮点类型,而整数类型中的自负类型也可被单独对待,因此常把基本数据类型分为四类——整数类型(1个字节:byte;2个字节:short;4个字节:int;8个字节:long);字符类型:两个字节:char;浮点类型:(4个字节:float;8个字节:double);布尔类型:boolean。

整数

通常情况下,给出一个整数默认为int。

如果把一个较小的整数复制给byte或short,系统会把这个整数值当成byte或short。

如果一个巨大的整数值(超过int范围),系统不会自动认为其为long型。如果希望被系统认为是long型,在数字后面加l或L。

JAVA中有四种进制,二进制(以0B或0b开头),八进制(以0开头),十进制,十六进制(0x或0X开头)

二进制最高位为符号位,1为负,负数的补码减1变为反码,再取反变为原码,而整数的原码就是补码,这个原码就是实际的值。


char型

JAVA语言用16为的Unicode字符集作为编码方式。

char型变量也可以进行加减乘除等数学运算,也可以比较大小,实际上都用其对应的编码来计算。


浮点型

JAVA浮点型有两种表示形式:

十进制数形式:简单的浮点数如3.33(必须有小数点,否则会被当成int型)

科学计数法形式:如5.33e2

只有浮点型数值才可以用科学记数法

如果希望系统认为某个浮点数为float型须在其后面加F或f,否则默认为double。

正无穷大:POSITIVE_INFINITY;负无穷大:NEGATIVE_INFINITY;非数:NaN

所有的正无穷大都相等,所有的负无穷大也都相等,但非数不和任何东西相等。

浮点型数除以0才可以等于无穷大,一个整数除以0的结果就是除以0异常。

举个例子:

class FloatTest {public static void main(String[] args) {Float af=342432.52342f;System.out.println(af);double a=0.0;double c=Double.NEGATIVE_INFINITY;float d=Float.NEGATIVE_INFINITY;System.out.println(c==d);System.out.println(a/a);System.out.println(a/a==Float.NaN);System.out.println(6.0/0==55.0/0);System.out.println(-8/a);System.out.println(0/0);}}



bit型理论上是占1个字节的,但java没有强制规定bit所占的空间,由于大部分计算机在分配内存时允许分配的最小内存单位是8字节,所以bit大多数时候占8个字节。


基本类型的类型转换

自动类型转换

java数据类型可以由范围小的向范围大的转换,具体方向是byte->short|char->int->long->float->double
char型和byte->short型是两个分支,彼此不能自动转换。
任何基本类型和String进行连接运算时都会转换为字符串。
3+4+“Hello”为7Hello      而“Hello”+3+4为Hello34

强制类型转换

由范围大的数据类型向范围小的数据类型转换可能会造成数据丢失或溢出。
字符串不能直接转化为基本类型,但可以通过基本类型的包装类转化。

表达式的自动提升

当一个算数表达式包含多个类型的值时,整个算数表达式的数据类型都会发生自动转换。
所有byte,short,char都将被提升到int型。
所以数据类型都会被提升到最高的类型。

直接量

直接量就是程序中源代码直接给出的值。
java在赋值时会支持自动类型转换。
String不能直接赋值给其它类型的变量,null可以赋值给任何变量。

但程序第一次使用某个字符串直接量时,java会使用常量池来缓存,之后使用时直接从常量池中提取。
java中每一个字符串常量都只有一个,不会有副本
0 0