Java的基本类型和引用类型
1.Java八大基本类型
(1)四种整数类型(byte,short,int,long):
byte:8位,用于表示最小整数单位,数值范围:-128~127。short:16位,很少用,数值范围:-32768~32767。int:32位,最常用的整数类型,数值范围:-2^31~2^31-1。long:64位,次常用,数值范围:-2^63-1~2^63-1。注意事项: int i=1; // 1 叫直接量(或字面量),即 直接写出的常数。 整数字面量默认都为 int 类型,所以在定义的 long 型数据后面加 L或 l。 小于 32 位大小的的变量,都按 int 结果计算。 强转符比数学运算符优先级高。见常量与变量中的例子。
(2)两种浮点数类型(float,double):
float:32位,后缀 F 或 f,1 位符号位,8 位指数,23 位有效尾数。 double:64 位,最常用,后缀 D 或 d,1 位符号位,11 位指数,52 位有效尾 注意事项: 二 进 制 浮 点 数 : 1010100010=101010001.0*2=10101000.10*2^10(2次方)=1010100.010*2^11(3次方)= . 1010100010*2^1010(10次方) 尾数: . 1010100010 指数:1010 基数:2 浮点数字面量默认都为 double 类型,所以在定义的 float 型数据后面加F 或 f;double 类型可不写后缀,但在小数计算中一定要写 D 或 X.X float 的精度没有 long 高,有效位数(尾数)短。 float 的范围大于 long 指数可以很大。 浮点数是不精确的,不能对浮点数进行精确比较。
(3)一种字符类型(char):
char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535) 。 注意事项: 不能为 0个字符。 转义字符:\n 换行 \r 回车 \t Tab 字符 \" 双引号 \\ 表示一个\ 两字符 char 中间用“+”连接,内部先把字符转成 int 类型,再进行加法运算,char 本质就是个数!二进制的,显示的时候,经过“处理”显示为字符。
(4)一种布尔类型(boolean):
true 真 和 false 假。
(5)类型转换:
自动转换:
byte-->short-->int-->long-->float-->double
char取值范围为0-65535,为正数,自动转换范围需为正数才可以。
强制转换:
①会损失精度,产生误差,浮点类型转换整数类型时,小数点以后的数字全部舍弃。。②容易超过取值范围,出现负数情况。
2.Java引用类型
java有 5种引用类型(对象类型):类 接口 数组 枚举 标注
引用类型:底层结构和基本类型差别较大
JVM的内存空间:(1). Heap 堆空间:分配对象 new Student()
(2). Stack 栈空间:临时变量 Student stu
(3).Code 代码区 :类的定义,静态资源 Student.class
eg:Student stu = new Student(); //new 在内存的堆空间创建对象
stu.study(); //把对象的地址赋给stu引用变量
上例实现步骤:a.JVM加载Student.class 到Code区
b.new Student()在堆空间分配空间并创建一个Student实例;
c.将此实例的地址赋值给引用stu, 栈空间;
引用变量的比较
对于 引用变量的比较一般是有两个不同的方法
1)比较两个变量是不是指向同一个对象,此时,需要比较 a b 中的地址是不是执行同一个值 ,因为此时比较的是 a b 中的地址值,要用 ==