java的数据类型
Java是一种强类型语言,每个变量都必须声明其类型。
为什么要声明类型?
当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
java中数据类型分为两种,1、基本类型 2、引用类型
一、基本类型
基本数据类型分为3类8种,何为3类8种?
就是基本类型的8种类型分了3个类别
数值型-byte, short, int, long, float, double
逻辑型-boolean
字符型-char
每个基本数据类型都有自己的包装类,目的是为基本数据类型进行封装。封装的好处有很多,例如泛型就不能用基本数据类型。如果多个方法共同操作一个基本数据类型的数据,而基本数据类型是赋值之后要在stack(栈区域)进行存储的,那么就会同时修改这个值,而包装类属于引用数据类型,存在堆区域,就可以避免这种情况。等等
突然有一天我有了个疑问,基本数据类型哪来的?
在java中我只找到了java.lang中的包装类,并没有找到基本数据类型基本数据类型 和 关键字, 后来终于发现原来都是在 jvm 里定义的想看的话, 去找 开源的 jdk,需要 C++ 支持
-
byte
范围:-128~127 (查看包装类源码可以看出来)
包装类:Btye -
short
范围:-32768~32767
包装类:Short
-
int
范围:-2147483648~2147483647
包装类:Integer
源码中的我们看到的是16进制,我们可以通过打印看一下这里十进制是多少
-
long
范围:-9223372036854775808~9223372036854775807
包装类:Long
同int一样我们看到还是16进制的,通过打印可以看到10进制数据 -
float
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数
包装类:Float -
double
double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数
包装类:Double -
boolean
只有两个取值:true 和 false,默认值是false
包装类:Boolean -
char
char 类型是一个单一的 16 位 Unicode 字符,char 数据类型可以储存任何字符.
包装类:Character
float 和 double 详细的问题我会在下一章细讲一下
二、引用类型
对象、数组都是引用数据类型,所有引用类型的默认值都是null,使用new操作符可以创建出类的一个实例,在java运行的时候,所有这些创建出来的实例都JAVA放在内存里一个叫堆的地方。引用数据类型是指向某个实体类型的一个东西,并不是实例本身。
java是一种面向对象的编程语言,万物皆对象,是不是可以理解为万物都可以是引用类型。