基本数据类型

来源:互联网 发布:衣阿华 知乎 编辑:程序博客网 时间:2024/06/06 02:13

基本数据类型

    Java中有8种基本数据类型,包括byte,short,int,long,float,double,char和boolean。其中byte,short,int和long属于整数类型,float和double属于浮点类型,都用来存储数值;char属于字符类型,用来存储字符;boolean属于逻辑类型,用来存储布尔值。C语言中的基本数据类型分为数值类型和字符类型char,字符类型又可以分为整型和浮点型,整型包含短整型short、整型int和长整型long,浮点型包含单精度型float和双精度型double。

1、整数类型

    整数类型是用来存储整数数值的,这个数值可以是正数也可以是负数。整型数据有三种表示形式:十进制、八进制和十六进制。java整型数据根据其所占内存的大小又可分为byte、short、int和long 4种类型。而在C语言中虽然没有byte类型,但是它的char类型数据却和java中的byte类型相对应。C语言中根据整数的最高位是否用作符号位,又将整型数据分为有符号(signed)整型和无符号(unsigned)整型,C语言系统默认为有符号整数。而在java中所有的数值类型都是有符号的,不存在无符号的数值类型。

    值得注意的是C语言中基本数据类型所占内存空间是可变的,并且只规定了它们取值范围的起点,所占位数的大小也会随着编译器的不同而改变,也就是说编译器的实现决定了数据在编译中具体的占了多少位。如果我们想知道程序中定义的基本数据类型所占内存空间的大小,可以在程序中通过limits.h文件中#define的INT_MAX这种宏观常量来获取你所使用的编译器实现的类型数据所占的内存空间大小。

    在java中就无需担心这个问题了,因为java固定了它基本数据类型的内存空间,换言之就是java中基本类型的内存空间是固定不变的,如下表:

     数据类型      

              内存空间(8位定义一个字节)     

取值范围

byte

8位

-128~127

short

16位

-32768~32767

int

32位

-2147483648~2147483647

long

                                64位

-9223372036854775808~9223372036854775807

                                                                            java 整数数据类型 

           在java中我们可以用常量在程序中获得基本数据类型的取值范围(二进制数),具体方法如下。

     基本路线类名.SIZE//所占位数

     基本路线类名.MIN_VALUE//取值范围下限(最小值)

     基本路线类名.MAX_VALUE//取值范围上限(最大值)  

2、浮点类型

    浮点类型表示有小数部分是数字。Java和C中浮点类型都可分为单精度浮点类型(float)和双精度浮点类型(double),它们的取值范围不同,具体情况如下所示:

     数据类型      

       内存空间      

取值范围

float

32位

1.4E-45~3.4028235E28

double

64位

4.9E-324~1.7976931348623157E308

                                      浮点数据类型

    Java中一般情况下默认小数是double型,若使用float型小数,就必须在小数后面添加标识F或f。

3、字符类型

3.1 char

    char字符类型用于存储单个字符,占用16位(两个字符)的内存空间。在定义字符型变量时,要以单引号表示,如‘a’就表示一个字符。而“a”则表示一个字符串,虽然只有一个字符,但由于使用双引号,它就只能表示字符串,而不是字符。

字符型变量a的定义有两种方式:char i=”a”;或char i=97 ;其实97是字符a在unicode表中的排序位置。

同C和C++语言语言一样,java语言也可以把字符作为整型对待。unicode采用的是无符号编码,可以存储65536个字符(0x0000~0xffff)。但是java中的char类型与C语言中的并不完全等同。

3.2 转义字符

    转义字符属于java中的一种基本数据类型,是一种特殊的字符变量,它以“\”开头,后跟一个或多个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”。具体含义如下表:

          转义字符          

含义

\ddd

       1~3位八进制数据表示的字符,如\456

\dxxx

       4位十六进制所表示的字符,如\0052

\’

       单引号

\\

       反斜杠字符

\t

 垂直制表符,将光标移到下一个制表符的位置

\r

        回车

\n

        换行

\b

        退格

\f

        换页

                                 转义字符

4、布尔类型

    布尔类型也是属于java的基本数据类型,是逻辑类型,通过关键字boolean来定义此类型变量,只有true和false两个值,分别表示布尔逻辑中的“真”和“假”。布尔值不能和整型数据进行转换。布尔类型通常被用在流程控制中作为判断条件。

   boolean类型和转义字符并不是C语言中的基本数据类型虽然C语言中没有布尔类型,却是有布尔值的。C99标准后可以直接导入#include<stdbool.h>头文件,里面有数据类型bool,定义bool a;此时a的值只有true和false两种取值其中false的值为0,true的值为1。

   下面是一个代码例子:

#include <stdio.h>   #include <stdlib.h>   #include <stdbool.h>    /* 测试C99新添加的头文件 stdbool.h */    int main(){      bool m = true;      bool n = false;      //打印布尔值n和m的值    printf("m==%d,  n==%d  /n", m, n);          //打印布尔值所占内存空间(一个字节)      printf("sizeof(_Bool) == %d  /n", sizeof(_Bool));        system("pause");      return EXIT_SUCCESS;  }  

   执行结果为:

m==1,  n==0  sizeof(_Bool) == 1 

   其实,java的基本数据类型和C语言最大区别在于,java要确定每个基本数据类型所占存储空间的大小。它们的大小不像C语言那样会随着机器硬件(编译系统)的变化而变化。这种不变性也使得java程序比用其他语言编写更具可移植性。

5、可进行的操作

5.1赋值

    赋值运算符只有一个,即“=”,用于将运算符右边的值赋值给左边的变量。

public class Eval {                            //创建类public static void main(String args[]){    //主方法int a,b,c;                             //声明int类型的变量a、b、ca=15;                                  //将15赋值给变量ac=b=a+4;                       //将a与4的和赋值给变量b,然后再赋值给变量c//打印变量值 System.out.println("c的值为:"+c);System.out.println("b的值为:"+b);}}
    运行结果:
    

5.2运算

5.3数据类型转换

  • 自动类型转换

        是指由低优先级数据类型向高优先级数据类型转换,不需进行特别说明,系统会自动完成转换。

public class Conver {public static void main(String args[]){byte b = 1;short  s = 2;char c = 'c';int i = 3;long l = 4;float f = 5.0f;double d = 6.0;s = b;        //byte类型自动转换成short类型i = c;        //char类型自动转换成int类型i = s;        //short类型自动转换成int类型l = i;        //int类型自动转换成longf = l;        //long类型自动转换成float类型d = f;        //float类型自动转换成double类型d = b;        //byte类型自动转换成double类型 d = f + d;    //加法运算,f先自动转换成double类型在参与运算//打印变量的值 System.out.println("变量b的值为:"+b);System.out.println("变量s的值为:"+s);System.out.println("变量c的值为:"+c);System.out.println("变量i的值为:"+i);System.out.println("变量l的值为:"+l);System.out.println("变量f的值为:"+f);System.out.println("变量d的值为:"+d);}}
    运行结果如下图
    

  • 强制类型转换

   是指由高优先级数据类型向低优先级数据类型转换,需要进行强制类型转换。

int a=(int)45.23;  //此时输出a的值为45long y=(long)456.6F;  //此时输出y的值为456int b=(int)'d';   //此时输出b的值为100





原创粉丝点击