Java数组类型与类型转换

    技术2025-11-18  27

    数据类型与类型转换

    数据类型基本数据类型整数小数/浮点数布尔类型字符 转义字符引用数据类型字符串 类型转换自动类型转换强制类型转换强制类型转换规则

    数据类型

    基本数据类型

    整数

    类型字节取值范围(二进制)取值范围(十进制)byte1字节-2^7 ~ 2^7 - 1-128~127short2字节-2^15 ~ 2^15 -1-32768 ~ 32767int4字节-2^31 ~ 2^31 -1-2147483648 ~ -2147483647long8字节-2^63 ~ 2 ^ 63 - 1-9223372036854775808 ~ 9223372036854775807

    二进制是计算机唯一可识别的文本,01010101,规则是逢二进一

    // 0000 0001 十进制1 // 0000 0010 十进制2 // 0000 0011 十进制3 // 0000 0100 十进制4 // 0010 0000 十进制32 // 1000 0000 + 1 十进制127

    有符号数,首位为符号位,符号位为0时,代表整数,为1时代表负数

    当byte的最大取值(127)+1时,则有效的8位空间中,符号位发生变化,将128变为了负数


    小数/浮点数

    类型字节负数取值范围正数取值范围float4字节-3.4E+38~-1.4E-451.4E-45 ~ 3.4E+38double8字节-1.7E+308 ~ 4.9E-3244.9E-324 ~ 1.7 + 308

    float 为单精度浮点型 double 为双精度浮点型 , Java中任何一个小数,默认类型是double

    ·浮点型数值采用科学技术法表示: ·2E3 等价于 2×10 ^ 3 (结果:2000.0) ·3E5 等价于 3×10 ^ 5 (结果:300000.0)

    注意:double为浮点数的默认类型,如需float类型赋值,需要在值的后面添加F.

    1.对于float来讲,取值范围包含int 的2147483647, float取值3.4E38 ,所以整数可直接赋值给float 2.小数的默认类型是double,所以直接给float赋值小数时,有可能赋值的小数不在float的取值范围,所以在给float赋值小数时,需要给小数进行追加F的操作,显示告知计算机此小数为float


    布尔类型

    类型字节取值范围描述boolean1字节true / false仅可描述“真”或者“假”

    ·可直接赋值true / false ·也可赋值一个结果为true / false 的表达式 ·注意:Java中的boolean不能参与算数运算


    字符

    类型字节取值范围(无符号数)字符编码char2字节0~65535Unicode字符集(万国码)

    ASCII码对照表

    ·Unicode字符集支持ASCII编码(美国标准信息交换码)

    Unicode中每个字符都对应一个十进制整数,从而可以使用多种方式赋值。

    字符赋值: char c1 =’ A ’ ; (通过’ '描述为 字符赋值) 整数赋值: char c2 = 65 ; (通过十进制数65在字符集中对应的字符赋值) 进制赋值: char c3 = ‘\u0041’ ;(通过十六进制数41在字符集中所对应的字符赋值) ·注意:char类型也支持整数表现形式,但char类型是无符号数,其中所有值均为正数。取值范围:0~65535


    转义字符

    ·如果需要在程序中输出一个单引号字符,该如何完成?

    public class TestChar{ public static void main (String args[]){ char c ='''; //编译错误:未结束的字符文字 } }

    ·为解决这一问题,Java采用了转义字符来表示单引号和一些特殊符号。

    转义字符描述\n换行符\t缩进(制表位)\反斜线\ ’单引号\ "双引号

    注意:char类型是支持\转义 使用\将"将本身具有特殊含义的字符“转换成”普通字符 使用\将“普通字符”转换成“本身具有特殊含义的字符


    引用数据类型

    字符串

    类型取值范围字符编码String任何“ ”之间的字面值Unicode字符序列 任何“ ”之间的内容都是字符串,包括空格

    类型转换

    自动类型转换

    两种类型相互兼容目标类型大于原类型

    举个例子

    short s = 123 ; int i = s; //自动类型转换 System.out.println(i); //两种类型兼容,目标类型大于原类型 float f =3.5F; double d =f ; System.out.println(d); byte = 10 ; double d2 = b ; System.out.println(d2); float d3 = 100.0F; long l =d3 ; //Error System.out.println(l); //这个会报错,小数是没有办法在毫无损失的情况下转换成整数的

    强制类型转换

    两种类型相互兼容目标类型小于原类型 //两种类型兼容,目标类型小于原类型 short ss = 123 ; byte bb =(byte)ss ; //在原类型前面加上 "(目标类型)" System.out.println(bb); float d3 = 100.0F; long l =(long)d3; System.out.println(l); double dd = 123.999; int ii = dd ; System.out.println(ii); //这里会丢失精度,打印出123

    注意: 通过在原类型前面,加上(目标类型),达到强制类型转换的目的,但是有可能会失去精度

    比如: 小数强转为整数 ,则失去精度,小数点后的值无法保留。

    强制类型转换规则

    整数长度足够,数据完整 例:

    int i = 100; byte b =(byte)i; //b=100

    整数长度不够,数据截断 例:

    int i =10000; byte b =(byte)i; //b=16 (符号位变换,可能变为负数)

    小数强转成整数,数据截断 例:

    double d =2.5; int i =(int) d ; //i =2(小数位舍掉)

    字符整数互转,数据完整 例:

    char c =65; int i = c ; //i = 65

    boolean的取值为true / false ,不可与其他类型转换

    Processed: 0.018, SQL: 9