1、聊聊Java中的八大基本数据类型
2、从内存的角度聊聊什么是字节?
java基本数据类型数值型,字符型,布尔型
数值型又分为byte,short,int,long,float,double
字符型:用单引号表示,里面只能有一个字符,例如,'a'、'1',
布尔型(Boolean):true和false,用来执行条件判断使用。
类型
占用内存大小
数值范围
byte
1byte=8bit 1个字节占8个bit,一个bit代表一个0或者1
[-128,127]
short
2byte
[-32768,23767]
int
4byte
[-2147483648,2147483647]
long
8byte
[-2^64,2^64-1]
float
4byte
[-3.4E+38 ,3.4E+38]
double
8byte
[-1.7E-308~1.7E+308]
boolean
1byte
true 、 false
char
2byte
在实际开发中,很少用float和double,因为会有精度确实和运算错误而是用BigDecimal这个类,对于非浮点数树,通常用int类型,long表示时间戳。
二元运算提升规则 整数运算:如果两个 *** 作数有一个是long,结果为long;没有long,结果为int,即使 *** 作数类型全为short、byte,结果也为int。
浮点运算如果两个 *** 作数有一个是double,则结果也是double,只有两个 *** 作数都是float,则结果才是float。
注意:整数和浮点数运算,结果为浮点类型。例如int 和float,结果为float。
为什么short、byte类型相加会自动升为int?而不是byte提升为short?使用较小类型运算没有性能优势,消除较小的类型使得字节码更简单,并且使得具有未来扩展空间的完整指令集仍然适合单个字节中的 *** 作码。因此,较小的类型通常被视为Java设计中的二等公民,在各个步骤转换为int,因为这简化了一些事情。
为较小的类型引入专用的算术逻辑单元不值得付出努力:它需要额外的晶体管,但它仍然只能在一个时钟周期内执行一次加法。 JVM设计时的主流架构是32位,适合32位int。
什么是变量?在某个范围内可以改变的量。
在java中,任何数据一定都是转换成二进制的形式存储在java内存中
为什么Boolean类型不用bit表示?因为计算机存取的最小单位是字节,一个字节等于8bit,bit是组成存储单位的最小单元,java数据类型也是存储在内存中的,所以只能用8bit,即1byte
为什么byte类型范围是-128到127,而不是-127到127?这是因为计算机存储数据类型是以补码的形式存储数据的。byte有8bit,首位是符号位,
127:补码表示为0111 1111 ,-127补码表示为1000 0001。我们发现-127还可以再减去1,依然没有超出byte存储数据范围,-127-1=-128,即1000 0001-0000 0001=1000 0000,
1000 0000表示成十进制就是-128。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)