数据类型是在学习语言时,首先就要学习的部分。不同的数据类型存储不同的变量,不同的变量存储的方式会有所差异,所占用的内存大小也不同,灵活的运用不同的数据类型会为我们开发的过程中带来很大的好处。
int
🎈int占用4个字节,在Java语言中没有有符号数和无符号数之分,全认为是有符号数。那么32个bit位,首位当然就是符号位了,其它位即就是数值位了。由此也就很容易的计算出int可以存储数据的范围了。
🎈当32位全为1时,即int可以存储的最小值-2147483648
🎈当符号位为0时,其他数值位全为1时,即可以存储正数的最大值2147483647
short
🎉short占用2个字节,存储的规则和int的规则是一致的。
🎉当16bit位全位1是,即short可以存储的最小值-32768
🎉当符号位为0时,其他数值位全为1时,即可以存储正数的最大值32767
long
🧢long占用8个字节,存储规则也同int一致。
🧢当64bit位全位1是,即long可以存储的最小值-9223372036854775808
🧢当符号位为0时,其他63数值位全为1时,即可以存储正数的最大值9223372036854775807
🧢由于Java语言中对字面值整形认为是int类型,所以当对变量类型位为long时的数据初始化时,在数据后面加上L。
float
💎float占用4个字节,浮点数的存储规则是按照IEEE754标准(和C语言一样),这里详细的存储方式在下面这篇博客中有详细分析。
探索数据的存储_小小太空人w的博客-CSDN博客
https://blog.csdn.net/weixin_62353436/article/details/125004901?spm=1001.2014.3001.5501💎在Java语言中,字面值小数被默认为double类型的数据,在对float类型变量初始化时,在数据后面加上f或者F,还可以直接进行强制类型转换成float类型。
double
🪖double占用8个字节,存储方式和float的存储方式一样,也是遵循IEEE754标准。
char
🎄char占用2个字节,在c语言中char是占用1个字节。因为在c语言中字符存储在内存中实质上是按照ASCLL字符集所对应的十进制数据来存储的,而Java语言中,字符的存储是按照Unicode字符集来存储的,Unicode中每个字符需占用2byte的内存。
byte
🎈byte占用1个字节,存储方式和int一致。
🎈当8bit位全为1时,即可以存储的最小值-128
🎈当符号位为0时,剩余7位数值位全为1时为最大值127
注意:
🐵由于cpu架构,每次读取内存中的数据是以4个字节为单位读取的。所以当读取小于4个字节数据时,它们会进行整形提升为4个字节。即运算出的结果也是4个字节的。当使用byte和short类型时需注意。
boolean
🎉boolean类型大小官方没有给出具体的值,真就是true,假就是false。和c语言对于真和假的定义是有区别的。
在Java中整形和字符串类型是可以相互转换的。
public class Exercise { public static void main(String[] args) { int a = 10; int b = 20; System.out.println("a:" + a + b); } }
可以清楚看见整形和字符串连接在了一起,整体变成字符串。
public class Exercise { public static void main(String[] args) { String str = "1000"; System.out.println(Integer.parseInt(str) + 1); } }
可以看见将字符串“1000”变为整形1000且加上了1。
public class Exercise { public static void main(String[] args) { int a = 100; String tmp = String.valueOf(a); System.out.println(tmp); } }
可以看见将整形100转换成字符串“100”赋值给tmp。
学习编程语言时,不要只局限于语法的学习,要从语言本身出发,勤于思考,相信会有不一样的收获。