ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基本数据类型

2022-04-02 12:33:50  阅读:199  来源: 互联网

标签:基本 类型转换 字节 00000000 数据类型 类型 byte


Java中的8大基本数据类型

基本数据类型的种类和大小、数据在计算机中的存储形式(二进制补码)、强制类型转换在二进制中的原理、字面值的赋值规则、多种数据类型混合计算转型原理和不同数据类型间的转换规则。

 

1.byte:  字节型  1个字节  8位   [-128,127]

2.short::  短整型  2个字节  16位  [-2^15,2^15-1]   

3.int:    整形   4个字节  32位  [-2^31,2^31-1]

4.long:   长整形  8个字节  64位  

5.float:    单精度  4个字节  32位

6.double:  双进度  8个字节  64位

7.boolean:  布尔型  1个字节  8位 

8.char:    字符型  2个字节  16位

注意:

1.在java语言中整数型字面值默认当做int类型,如果想让整数型字面值被当做long类型,需要在字面值后面添加l/L,一般多用L。

  

 

  报错的原因是 自动将字面值当做int类型来处理,而2147483648已经超出了int的范围,所以需要将它标识为其他的能容纳它的类型。

  

 

2.强制转换的原理 

  以long 类型强制转换为int类型为例,假设有一个long类型的数据是 00000000  00000000  00000000  00000000  00000000  00000000  00000000  01100100,

  将它强转为int,就是直接将long类型的前四个字节砍掉,只拿后面的四个字节。00000000  00000000  00000000  01100100。

  所以,强制类型转换需谨慎,有可能会丢失精度。

  

  上例:解剖  (计算机存储数据是以二进制补码的形式存储  正数的补码和源码相同,负数的补码  是负数的绝对值对应的二进制码 对位取反再+1)

  2147483648L 的二进制是  00000000  00000000  00000000  00000000  10000000  00000000  00000000  00000000

  强制类型转换后得到的是  10000000  00000000  00000000  00000000  (砍掉前4个字节)

  也就是说  10000000  00000000  00000000  00000000  这是原数据的补码形式  补码求源码

  先减1     01111111    11111111   11111111    11111111

  对位取反  10000000  00000000  00000000  00000000 

  所以源码是 10000000  00000000  00000000  00000000  2147483648

  而补码的符号位是1(首位),则表示该数据是负数,所以原数据是  -2147483648

  2147483648L是long类型,8个字节,符号位是0,所以对于long类型来说2147483648L是正数

  

 

   按道理说整形字面值赋值给byte,大专小需要强制类型转换,但是编译通过,而128编译报错,说明底层字面值只要在byte范围内是不需要认为强制类型转换的,此时要纠正错误就需要强制类型转换。

  

   

  具体还原过程以及计算结果

  

 

  char类型尝试

    常见的一些字符的ASCII码 A-->65,a-->97(其他字符一次递增)数字0-->48

  

  double和float

    带小数的值默认是double 类型,double类型的字面值赋值给float类型变量,大转小需要强制类型转换,所以编译报错

 

    解决办法

      1.强制类型转换为float

      

      2.将字面值标识为float类型

       

3.八种基本数据类型之间的转换规则

  1、八种基本数据类型除了boolean外,其他的都能相互转换。

  2、小容量可以自动向大容量转换,即自动类型转换。容量大小如下

    byte<<short(char)<<int<<long<<float<<double

    

 

    注意:

      1、不管浮点型占几个字节,其容量都比整形大

      2、char和short表示的种类不同,但是char可以取到更大的正整数

  3、强制类型转换慎用,因为有可能会丢失精度

  4、当一个整数字面值没有超过byte,short,char类型的取值范围时,可以直接复制给byte,short,char类型,此时的转换机制底层帮我们完成了,目的是方便程序员开发

  5、byte,short、char运算时,先转换成int后,再参与运算。

  6、多种数据类型混合运算时,先转换成参与运算中最大的数据类型后,再进行计算。

 

      

 

标签:基本,类型转换,字节,00000000,数据类型,类型,byte
来源: https://www.cnblogs.com/ashes001/p/16089399.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有