JAVA中八大基本数据类型

java 中String 是个对象,是引用类型
基础类型与引用类型的区别是,基础类型只表示简单的字符或数字,引用类型可以是任何复杂的数据结构,还可以操作这种数据类型的行为
java虚拟机处理基础类型与引用类型的方式是不一样的,对于基本类型,java虚拟机会为其分配数据类型实际占用的内存空间,而对于引用类型变量,他仅仅是一个指向堆区中某个实例的指针。

1.八大基本数据类型:

第一类:整型 byte short int long

第二类:浮点型 float double

第三类:逻辑型 boolean

第四类:字符型 char

2.各种基本数据类型所占的字节:

byte 字节类型                    1byte/8bit  用于表示最小数据单位,如文件中的数据
short 短整型                    2byte 很少用
int 整数类型                      4byte 最常用 (21亿)
float 浮点类型(单精度) 4byte
long 长整形                      8byte 次常用

double 双精度类型(双精度)  8byte 最常用

boolean 布尔型                 1byte

char 字符型                       2byte  一个字符能存储一个中文汉字,使用Unicode码代表字符

3.整型各基本数据类型的取值范围

因为1byte = 8bit ,(例如将3转化为二进制为:0000 0011 ,切记第一位为符号位,即0代表+,1代表-,剩下的七位是数据位

                    ,首位为1是负数。负数是用补码表示,变成原码要首位不变,取反加一

                                   -3转换为2进制:3的源码数据位 000 0011的补码为1111100再加一,1111101再加数首位1  就是

                                  11111101)

所以byte取值范围是:-2^7~2^7-1,即:-128~127(因为0也包括在内,所以在正数范围是2^7-1,

                                 总共2^8是256个取值,负数128个、0、正数127个)

同理short取值范围:-2^15~2^15-1

int取值范围:-2^31~2^31-1

long取值范围:-2^63~2^63-1


4.float和double取值范围和精度问题

float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:

float:1bit(符号位)8bits(指数位)23bits(尾数位)
double:1bit(符号位)11bits(指数位)
52bits(尾数位)

范围问题:

float的指数范围为-2^7~2^7-1(即-128~127),而double的指数范围为-2^10~2^10-1(即-1024~1023)

float的范围为-2^128 ~ +2^127

-3.403E383.403E38(E代表科学计数法的10)

double的范围为-2^1024 ~ +2^1023

-1.798E3081.798E308

精度问题:

float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的

,故不能对精度造成影响

float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;

double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。

举例:double d = 111.999123456789123;
        System.out.println(d);
      double d1 = 1111111111.9991234567890;
        System.out.println(d1);

输出:111.99912345678912
1.1111111119991236E9

数精度位数的时候都去掉最前面的一位,后面都是精度 16位,因为第16位可能进行了四舍五入可能不精确,所以说精度是15~16

注意:如果小数点后最后一位是0的话,会自动去掉。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值