您的位置:首页 > 编程语言 > Java开发

Java基本数据类型及数据类型转换

2016-07-14 20:05 155 查看

1、Java中基本数据类型包括:整型(byte、short、int、long)、字符型(char)、布尔型(boolean)、浮点型(float、double)三种类型。

2、所占内存分别为:byte:1Byte;short:2Byte;int:4Byte;long:8Byte;char:2Byte;boolean:1Byte;float:4Byte;double:8Byte;

3、表示数的范围byte:[-128~127];short:[-32768~32767];int:[-2147483648~2147483647];long:[-9223372036854774808~9223372036854774807];

  float:[3.402823e+38 ~ 1.401298e-45];double:[1.797693e+308~ 4.9000000e-324];

  表示范围的计算:

        例如byte类型:

              00000_0000~0111_1111:表示0~127;

              10000_0000~1111_1111:表示-128~-1;

              10000_0000 为-0;规定-0 = -128;

4、在Java中所有的整型数据默认都为int类型,浮点型默认为double;其它类型byte、short会隐式转换(若不超出表示范围);eg.:

1 byte b = 10;    //隐式转换
2 short s = 10;    //隐式转换
3 int i = 10;
4 long l = 10L;    //需要L或l注明
5 float f = 10F;    //需要F或f注明
6 double d = 10;

5、扩展转换,扩展转换不必要进行显示的类型转换,因为目标类型足够容纳当前类型不会丢失信息。

eg.:

byte b = 10;    //隐式转换
short s = 10;    //隐式转换
int i = 10;
long l = 10L;    //需要L或l注明
float f = 10F;    //需要F或f注明
double d = 10;

//扩展转换
short bUp = b;
int sUp = s;
long iUp = i;
float lUp = l;
double dUp = f;

char ch = '1';
int chUp = ch-48;

 6、强制类型转换,将容纳更多信息的数据类型转换成一个容量更小的数据类型,可能存在精度损失的风险,编译器要求程序员进行强制类型转换;

eg.

int age = 10;
short ageDown = (short)age;//强制类型转换不会丢失信息

System.out.println(ageDown);

int width = 130;
byte widthDown = (byte)width;//强制类型转换会丢失信息

System.out.println(widthDown);

输出:
  10
  -126
float average = 10.5f;
int averageDown = (int)average;

System.out.println(averageDown);

输出:
  10

 

   由于with = 130超出byte数据类型的表示范围,所以编译器会进行高位截断:

    130 原码:0000_0000_0000_0000_0000_0000_1000_0010 ;

       补码:0000_0000_0000_0000_0000_0000_1000_0010 ;

    将130的补码截取低八位:1000_0010 ;

    1000_0010 ;为补码形式最高位为符号位,可见结果是一个负数,减一取反求得原码为:1111_1110;

    所以输出为-126。

  而浮点数直接截断小数部分。

  通常表达式中的最大的数据类型结果决定了该表达式的数据类型。

7、练习题:

一、二会通过编译?

/**
* 一:
*/
short s1 = 1;
s1 = s1 + 1;
/**
* 二:
*/
short s1 = 1;
s1 += 1;

 

 答案:二

  因为在Java中所有整型数据默认都为int型 s1 = s1 + 1; 1为int型需要强制装换;而 s1 += 1; 编译器会进行隐式的类型转换。

 

写的第一篇文章写得好方/(ㄒoㄒ)/~~。。。。。

转载于:https://www.cnblogs.com/stivebone/p/5671584.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: