java数据类型

8个基本数据类型分别是:boolean、char、byte、short、int、long、float、douboe

  1. boolean类型只有两个值:true和false。
  2. char类型在内存中占2个字节。表示一个字符,也可以使用ASCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从0 到 65535
  3. byte是JAVA中最小的数据类型,它在内存中占8位(8个bit),取值范围从-128到127
  4. short类型在内存中占2个字节,取值范围从 -32768到32767
  5. int型在内存中占4个字节。取值范围从 -2147483648 到 2147483647**
  6. long型在内存中占8个字节。取值范围从 -9223372036854775808 到 9223372036854775807
  7. float型在内存中占4个字节。取值**范围从 -3.4E38 到 3.4E38
  8. double 型在内存中占8个字节。取值范围从 -1.7E308 到 1.7E308
基本数据类型对照表

类型

字节

范围

byte

1

-2^72^7-1

short

2

-2^152^15-1

char

2

 

int

4

-2^312^31 - 1

long

8

-2^632^63 -1

float

4

-3.4E38 到  3.4E38

double

8

-1.7E308 到  1.7E308

boolean

 

truefalse

 

1.1、floatdouble的存储

float与double对比

类型

符号位

阶码

尾数

长度

float

1

8

23

32

double

1

11

52

64

例如:13.625在内存中的存储

首先要先理解浮点数在内存中的存储结构。由上表可知,float数据类型由1个符号位、8个阶码(指数)位、23个尾数(小数点后的数)位共32位组成。

所以float最终的表示方式为: A BBBBBBBB CCCCCCCCCCCCCCCCCCCCCC   ,其中A表示符号位,B表示指数位,C表示尾数位。数13.625转换为float类型,首先将整数和小数各自转化为二进制,变成 整数二进制.小数二进制 的形式。如13.625变为1101.101,再将小数点左移或右移至第一个有效数字后面,即1.101101,小数点左移了3位,所以指数为3,IEEE规定实际指数在存储前需要做偏差修正—即实际指数加上指数偏差127得到130(至于为什么这样做有兴趣的可以自己去了解,这里不做介绍),130转化为二进制就是阶码位的值。所以最后A的取值为0或1;B为指数值130的二进制,C为1.101101的小数点后值101101,共有23位,后面补0,为101 1010 0000 0000 0000 0000。所以最终的值为0 10000010 10110100000000000000000

下面是计算13.625在内存中的存储具体计算方法

  • 首先将13.625转化成二进制,整数部分除2取余,直到商为0停止 。最后读数时,从最后一个余数读起,一直到最前面的一个余数(模2取余法

13 / 2 = 6 ···余1

  6 / 2 = 3 ···余0

  3 / 2 = 1 ···余1

  1 / 2 = 0 ···余1

所以整数部分13的二进制位 1101

  • 小数部分乘2取整,然后从前往后读。(乘2取整法

0.625*2 = 1.25 --- 取整 1

0.25*2 = 0.5     --- 取整 0

0.5*2 = 1          --- 取整 1

所以小数部分的二进制 101

  • 然后将 1101.101的小数点向左移至小数点前只有一个1,即左移3 。(这里为二进制的特定表示方法,将整数部分划为1

指数位由8位二进制数表示无符号整数0~255(由于有符号数通常的表示法——补码——会使数值的比较变得困难,所以实际指数在存储前需要做偏差修正——即实际指数加上指数偏差127,将它的值调整到一个无符号数的范围内进行比较)。float实际指数的取值范围为-126~+127

阶码就是3+127 = 130 :1000 0010

  • 符号位:0
  • 尾数 :因为小数点前必为一,所以记录小数点后面的数即可 101101
  • 所以13.625表示为: 0100 0001 0101 1010 0000 0000 0000 0000

转换成16进制后为 41 5A 00 00

2、引用数据类型


  • 对象、数组、接口都是引用数据类型。
  • 所有引用类型的默认值都是null

3、Java 常量


常量在程序运行时是不能被修改的。

Java 中使用 final 关键字来修饰常量,声明方式和变量类似:

final double PI = 3.1415927;

byteintlong、和short都可以用十进制、16进制以及8进制的方式来表示。

当使用常量的时候,前缀 0 表示 8 进制,而前缀 0x 代表 16 进制, 例如:

int decimal = 100;

int octal = 0144;

int hexa =  0x64;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值