(1)整数类型:byte、short、int、long
(2)小数类型:float、double
(3)字符类型:char
(4)布尔类型:boolean

先附上一个比较直观的表,长度表示字节:

 byte: 字节  bit: 位

  1. 短整型 short:

    所占内存大小:2byte=16bit;

    所能表示范围:-3276832767;(即 - 2^152^15-1)

  1. 整型 int:

    所占内存大小:4byte=32bit;

    所能表示范围:-21474836482147483647;(**即 - 2^312^31-1**)

    unsigned:  

    所占内存大小:4byte=32bit;

    所能表示范围:04294967295;(**即 02^32-1**)

  1. 长整型 long:

    所占内存大小:4byte=32bit;

    所能表示范围:-21474836482147483647;(即 - 2^312^31-1)

    unsigned long:  

    所占内存大小:4byte=32bit;

    所能表示范围:04294967295;(即 02^32-1)

  1. long long:

    所占内存大小:8byte=64bit;

    所能表示范围:-92233720368547758089223372036854775807;(即 - 2^632^63-1)

    unsigned long:  

    所占内存大小:8byte=64bit;

    所能表示范围:018446744073709551615;(即 02^64-1)

    注:上面所说的全部是有符号型的,short,int,long, long long 都默认为有符号型,其 中 long 和 int 都占 4 个字节的空间大小,他们有什么区别呢?

           16 位操作系统:long:4 字节,int:2 字节

           32 位操作系统:long:4 字节,int:4 字节

           64 位操作系统:long:8 字节,int:4 字节

    int 型在不同位数操作系统中所占用的字节数不同,如果想编写可移植性好的程序,早年流行 16 位和 32 位操作系统时最好用 long 修饰 int 型,现在流行 32 位和 64 位操作系统,用 int 就挺多了。当然这些都看你怎么去理解它了,毕竟它 们在不同操作系统所占字节数不固定,所以各自都有其适用之处,不可定论其好坏。

    下面是对它 们的有科学依据的规定:

    C 语言规定:无论什么平台都要保证 long 型占用字节数不小于 int 型, int 型不小于 short 型

  1. 字符型 char:

    所占内存大小:1byte=8bit;

    所能表示范围:不确定!!!!;

    unsigned char:

    所占内存大小:1byte=8bit;

    所能表示范围:0255;(02^8-1)

    singned char:  

    所占内存大小:1byte=8bit;

    所能表示范围:-128127;(-2^72^7-1)

    char 的默认类型不确定有可能是 unsigned,也有可能是 signed,主要更具编译器而定,可以自己测试一下编译器的默认 char 的符号类型。

  1. 布尔类型 bool:

    所占内存大小:1byte=8bit;

    所能表示的范围:只能取两个值 false 或者 true;所以最小值就是:0, 最大值:1.

  1. 单精度 float:    

    所占内存大小:4byte=32bit;

    所能表示的范围:(1.17549e-038)~(3.40282e+038);

    注意:浮点数在 内存中都是按科学计数法来存储的,浮点数的精度是由尾数的位数决定的,大家记住即可不必深究;

聊一聊 IEEE754 标准(里面涉及浮点数精度丢失问题)_浮点数对阶移位的精度损失_你代码写的好像不对的博客 - CSDN 博客

java float double 精度为什么会丢失?浅谈 java 的浮点数精度问题_abing37 的博客 - CSDN 博客

java 面试官:Double 为什么会丢失精度?解决方法?答出给 1 万月薪 - 腾讯云开发者社区 - 腾讯云

  1. 双精度 double:

   所占内存大小:8byte=64bit;

   所能表示的范围:(2.22507e-308)~(1.79769e+308);

    注:如何区分和使用这两个浮点类型呢,首先 float 和 double 的精度不同, float 保留到小数点后面 7 位,而 double 保留到小数点后面 16 位,float 能保证 6 位有效数字,而 double 能保证 15 位有效数字,如果在不追求精度的的情况下当然用 float 比较好,节省内存,如果需要很高的精度的情况下,最好还是用 double,平时我们定义浮点型变量一般都用 double,毕竟精度高,一般精度 的损失是不能忽略的。

  1. 字符串 string:由于 string 在 c++ 中属于类类型,不是基本数据类型,类不能计算其在内 存中所占大小,非要用 sizeof(string) 来算的话,一般算出来的结果是 sizeof(string)=4byte,如果 string 字符串内容很多,很明显就不是其 真实大小,string 类里面有计算其字节大小的函数如:size(),length()。