java基本的数据类型

来源:互联网 发布:淘宝商城女装卫衣套装 编辑:程序博客网 时间:2024/06/06 01:44

      java的数据类型分为两种:基本数据类型和引用数据类型。

      基本数据类型有八种:整形--byte,short,int,long,浮点型--float,double,字符型--char,布尔型--boolean

      其中整形和浮点型被称为数值型。

     下面详细介绍:

     boolean: 由于一个字节有八位,虽然,boolean类型只有一位,是1/8个字节,但在java中,还是按照一个字节来处理,其默认为false。

     byte:1个字节,8位,取值范围是-128-127(提示:2的8次方)默认0

    short:2个字节,16位,取值范围是-32768-32767(提示:2的16次方)默认0

     int:4个字节,32位,取值范围是-65536-65535(提示:2 的32次方)默认0

     long:8个字节,64位,取值范围是-2的64次方--2的64次方-1 默认0

    char:2个字节,16位,与别的语言不同,java中的char是16位的,因为java用的是unicode码。取值范围:0-65535 默认是:"\u0000"

     float:4个字节,16位,取值范围是-32768-32767  默认是0.0f  有效位8位

    double:8个字节,32位,取值范围是-65536-65535,默认是0.0d 有效位16位


   另外注意一下由于char采用的unicode的编码方式,所以char有以下初始化方式:

    char c='c'; //字符,可以是汉字,因为是Unicode编码

    char c=十进制数,八进制数,十六进制数等等; //可以用整数赋值 

    char c='\u数字'; //用字符的编码值来初始化,如:char='\0',表示结束符,它的ascll码是0,这句话的意思和 char c=0 是一个意思。

    另外:注意一下常用char类型的Ascill 码:A--65,a--97,0--48,回车--13,换行--10,空格--32

  

   java为什么可移植性好?从基本数据类型来阐述理由。

    由于java各种类型都有固定的取值范围和字段长度,因而不受具体操作系统的影响,以保证java程序的可移植性。    

    Java的浮点类型有两种表现形式:

 十进制数形式

 科学计数法形式

 运算

 1.整形运算与浮点运算结果是浮点类型

 2.Long类型与比long低的整形运算时long类型

 3.Int类型与比int低的类型运算是int类型

 4.Short类型相运算时int类型

 5.shortbyte运算是int类型

 6.双目运算会改变运算的类型s=s+1,但单目运算不会改变运算的类型s++

 7.注意范围byte b=127,b2;b2++;

 8.双目当中复合运算不会改变类型s+=1;

 9.Byte s=’c’+1;//不会出错,因为都是常量

 10.Byte b=’c’;

 11.Byte s=b+1;//会出错,因为b是变量


 注意这个问题!!


    Float f=0.0;//出错原因是java中小数默认是以double表示的 所以0.0double类型的

 要写float f=0.0f或者float f=(float)0.0;

   

  自动类型转换

  自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以 Java语言在设计时,没有为该操作设计语法,而是由JVM自动完成。


  转换规则:从存储范围小的类型到存储范围大的类型。
  具体规则为:byte→short(char)→int→long→float→double

  也就是说 byte类型的变量可以自动转换为short类型,示例代码:

       byte  b  =  10;

      short  sh  =  b;这里在赋值时,JVM首先将b的值转换为short类型,然后再赋值给sh
  在类型转换时可以跳跃。示例代码:

        byte  b1  =  100;int  n  =  b1;

 

   强制类型转换

   强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种损失时才进行该类型的转换。

   转换规则:从存储范围大的类型到存储范围小的类型。

   具体规则为:double→float→long→int→short(char)→byte

   语法格式为:(转换到的类型)需要转换的值

   示例代码:

          double  d=3.10;int  n=(int)d;

   这里将 double类型的变量d强制转换成 int类型,然后赋值给变量 n。需要说明的是小数强制转换为整数,采用的是1,也就是无条件的舍弃小数点的所有数字,则以上转换出的结果是 3整数强制转换为整数时取数字的低位,例如 int 类型的变量转换为 byte类型时,则只去int类型的低8(也就是最后一个字节)的值。
  示例代码:

        int  n  =  123;byte  b  =  (byte)n;int  m  =  1234;byte  b1  =  (byte)m;

  则 b的值还是123,而b1的值为-46b1的计算方法如下:m的值转换为二进制是10011010010,取该数字低8位的值作为b1的值,则b1的二进制值是11010010,按照机器数的规定,最高位是符号位,1代表负数,在计算机中负数存储的是补码,则该负数的原码是10101110,该值就是十进制的-46
  注意问题:强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。

     

   

   


 

    

    

     

0 0