数据类型及类型转换

    xiaoxiao2024-11-15  69

    数据类型

    数据类型及数据的类型,有两个作用,开辟内存空间以及决定存放的数据类型,Java的基本数据类型有八种,具体情况如下。

    一、整形数据(byte、short、int、long)

    Java整形数据有四种表示形式,byte,short,int,long,他们的区别为取值范围不同,之所以不同是为了节省空间,例如年龄变量,我们只需要用short型即可(byte最大为127),没必要采用int型,占内存。

    Java整数有四种表示形式,分别如下:

    1、十进制整数:如127,-5等

    2、二进制整数:以0b开头,如0b011(十进制3)0~1

    3、八进制整数:以0开头,如011(十进制9)0~7

    4、十六进制数:以0x开头,如0x01f(十进制31)0~9,a~f/A~F相同意义

    二、浮点型数据(float、double)

    浮点型数据有以下两种形式

    1、十进制形式:如3.14

    2、科学计数法:如3e8(表示3*10的8次方)E,e均可

    注:float型精度要比double小,float  a=1.3,会出错,1.3默认类型为double,故应为double a=1.3(亦可进行强制类型转换,下面会提及)

    三、字符型数据(char)

    与C语言不同的是,C语言字符型数据采用的是ASCII码,一个字符一个字节,表示范围为0到2的8次方-1(0-255),而Java字符采用的是Unicode编码,一个字符两个字节,表示范围为0到2的16次方-1(0-65535),前256位都相同,后面相当于ASCII的扩展。

    该种数据类型的变量可以有以下几种赋值方式:

    1、 使用英文单引号(' ')括起单个字符;例如:

       char c1 = 'a';  

       char c2 = '中';//char可以存储一个中文(一个中文也占2个字节);

    2、 使用英文单引号括起来十六进制字符代码值来表示单个字符,格式为'\uXXXX',其中u是约定的前缀,为Unicode的第一个字母,例如:    

      char c1 ='\u0061';// 实质代表a字母  

    3、可以直接使用数字表示单个字符,例如:

       char c2 = 97;//表示a字母

    4、 某些特殊的字符可以采用转义符'\'来表示,以将其后面的字符转变为其它含义,例如:  

      char c1 = '\t';//制表符  

      char c2 = '\n';//换行符-New Line  

      char c3 = '\r';//回车符-Carriage Return

    四、布尔型数据(boolean)

    布尔型,又称逻辑类型,只有true和false两个取值,默认初始值为false。这区别与C语言,在C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。

    但在二进制逻辑中Java规定1为真0为假。

    类型转换

    类型转换有两种:自动类型转换与强制类型转换

    1、将表示范围小的数据类型赋值给表示范围大的数据类型时,Java自动使用隐式类型完成数据类型转换

    2、而将表示范围大的数据类型赋值给表示范围小的数据类型时,只能进行强制类型转换,且会导致数据精度受损。

          强制类型转换可能导致数据精度损失或溢出

         转换格式:(要转换的类型)被转换的值

    其中34.98f指float型34.98,不可省

    编程实验:

    public class HelloWorld{ public static void main(String[] args){ //整形byte short int long int age1=12;//十进制 System.out.println(age1); int age2=0b0111;//二进制0 1 System.out.println(age2); int age3=017;//八进制0~7 System.out.println(age3); int age4=0x01f;//十六进制0~9 a~f System.out.println(age4); int age_4=0x01F; System.out.println(age_4); System.out.println("~~~~~~~~~~~~~~~"); //浮点型float double double price=9.9;//十进制 System.out.println(price); double pi=3.14e2;//科学计数法 System.out.println(pi); System.out.println("~~~~~~~~~~~~~~~"); //字符型char char letter1='a'; System.out.println(letter1); char letter2=65; System.out.println(letter2); char letter3='\u0041'; System.out.println(letter3); //转义字符 System.out.println("HelloWorld"); System.out.println("\tHello\nWorld"); System.out.println("~~~~~~~~~~~~~~~"); //boolean型true false boolean flag=true; System.out.println(flag); System.out.println("~~~~~~~~~~~~~~~"); //数据类型转换 byte a=12; int b=a;//小范围数据可以直接赋给大范围数据类型的变量,自动类型转换 System.out.println(b); float c=0.1f;//0.1为double型,64位,大范围不能直接赋值给小范围 System.out.println(c); int d=(int)3.14;//强制类型转换 System.out.println(d); } }

    编译结果:

    最新回复(0)