我们今天来学习一下Java中的数据类型:
先来普及一下内存大小:
1Byte = 8 Bit
1 Kb = 1024Byte
1Mb = 1024Kb
1Gb = 1024Mb
1Tb = 1024Gb
下图是存储容量单位的示意图:2^10 = 1024, 除了byte和bit的比率换算,其余的都是1024制的
一、基本数据类型
1.类
类就是一个元素类型的整体,而我们经常使用的功能其实就是这个类中的一些属性
下面就用int来举例:
1.1 int - Integer:
大小:4byte
其中的
Integer其实就是int类型的类,而后面的MAX_VALUE / MIN_VALUE就是它们这些类的一些属性(功能)来计算相应的数据。
2.整型(int - Integer)
大小:4 byte
大小计算:4 Byte = 32 bit
所以说Int的存储范围是[-2 ^ 31 , 2 ^ 31 - 1]
我们对任何一个类型的容量可以用一张图来解释清楚:(如下图)
max + 1 = min;
下面用代码来解释
事实证明,确实是这个逻辑
3.长整型(long - Long)
大小:8 byte
大小计算:8 Byte = 64 bit
所以说Int的存储范围是[-2 ^ 63 , 2 ^ 63 - 1]
4.双精度浮点型(double - Double)
大小:8 byte
大小计算:8 Byte = 64 bit
所以说Int的存储范围是[-2 ^ 63 , 2 ^ 63 - 1]
5.单精度浮点型
大小:4 byte
大小计算:4 Byte = 32 bit
所以说Int的存储范围是[-2 ^ 31 , 2 ^ 31 - 1]
6.字符数据(char - character)
注意:在C语言中char类型的是一个字节,但是在Java中是2个字节
大小:2 byte
大小计算:2 Byte = 16 bit
char可以打印的数据:
java与C语言不同之处就在于
C语言将编码表成为ASCII码表,而且C语言的ASCII码表的适用范围很窄,只仅仅适用一小部分的语言与符号。
Java里面称为Unicode表 而且Java的适用范围很广,适用于多国语言,因为C语言的ASCII码表只适用于1byte的元素,而Java却适用于2byte的元素,相对而言存储的内容能更多一些。
7.Byte类型(byte - Byte)
大小:1 byte
大小计算:1 Byte = 8 bit
所以说Int的存储范围是[-2 ^ 7 , 2 ^ 7 - 1]
当我们在byte里面存储一个128,他就会开始溢出,因为byte里面是不能存储这么大的数值的
8.短整型(short - Short)
大小:2 byte
大小计算:2 Byte = 16 bit
所以说Int的存储范围是[-2 ^ 15 , 2 ^ 15 - 1]
9.布尔型(boolean - Boolean)
9.1 在Java中boolean是没有大小的
9.2 在Java中boolean只有true/false
9.3 在Java中Boolean是boolean的包装类
二、引用数据类型
引用数据类型通常在Java中有以下几种类型:
类 String 数组 抽象类 接口 枚举
1.字符串数据类型:
在Java中字符串的初始化时使用String来初始化字符串的
2.整型提升(为了兼容大字节的类型小字节类型的元素就会进行整形提升,来兼容大字节的需求)
3.拼接符(+) / 正号符号(+)
在Java中我们常常会将数值和字符串连接此时我们就需要连接符(+)
Java不像C语言一样,必须使用相应的格式化语句来打印数据:
C语言打印:
4.变量的作用域:
变量的作用域其实有两种:局部作用域 / 全局作用域
先使用C语言版来解释这两种作用域:
局部作用域:
5.常量:
字面常量:
十进制:12
2进制:010
8进制:/012
16进制:0x12
long:10L
float:10.0f
double:10.0
指数型:10e10 e10:指的是以10为底10次方的数
布尔型:true / false
字符型:'A'
字符串型:"abde"
被final修饰的常量是不能够被修改的(java中的final其实和C语言的宏是一个道理)
6.强制类型转换:(有时候会产生精度缺失/不同类型的元素进行赋值,为了兼容进行强制类型转换)
7.int和boolean是不能相互转化的
int中只能存储数值数据
但是boolean只能存储true/false
两种类型不一样,所以导致不能相互转换
8.int和String 是可以转换的
9.想要将字符串变成数值,就必须类中的属性:
以int举例: