Java笔记
基本数据类型
Java的数据类型包括基本数据类型和引用数据类型,基本数据类型又包括属于整型,用于存储整数的long(长整型,8字节)、byte(1字节)、short(短整型,2字节)、int(整型,4字节);浮点型,存储小数的float(4字节)、double(8字节);字符型char(2字节);还有boolean(无默认长度,只存储true或false),倘若发生数据的溢出,就会使所得数据不正确。例如byte占1字节,即8个比特位,所能存储的十进制为-128 ~ 127,如果运行以下一个语句:
for(int i = 0;i<128;i++){
System.out.println(i);
}
便会死循环,当加至127后再进行i++操作,打印出的是-128;在byte所占的1个字节、8个比特位中,首位为符号位,存放数字的二进制有效位是7位,排列组合即2^7 = 128个数,计算机中二进制以补码运算,127的补码为0111 1111,执行i++操作后变为1000 0000,是128的补码,也是8个比特位下的-128的补码(整数原码、反码、补码相同,负数原码为对应相反数的正数符号位取1,反码为符号位不变,其他位求反,补码=反码+1),发生溢出,因此始终满足小于128的条件,循环不断。
变量的声明与定义
在方法中声明的基本数据类型的变量存放在栈中,方法结束,变量的生命周期也结束。
声明定义变量的方式为: 变量类型 变量名 = 值;(以int为例):
int a; //声明变量
a = 1;//定义变量
int a = 1; //声明同时赋值定义,等号右边也可填写其他int类型。
数据类型的转换
//当小数据类型向大数据类型转换时,类型自动提升,称为隐式转换,例如:
short a = 10;
int b = a;//a = 10, b = 10;
//当大数据类型向小数据类型转换时,若使用相同方法:
int a = 10;
short b = a;//报错:不兼容的类型,从int转换到short可能会有损失。
不论是否在二者公共区域,都会报错。因此大数据类型向小数据类型进行转换时,需要使用强制转换(方法:(数据类型)变量名,强制转换也适用于小数据类型转大数据类型):
int a = 10;
short b = (short)a;// a = 10, b = 10;
若超过小数据类型范围的大数据类型数向小数据类型转换:
int a = 128;
byte b = (byte)a;
System.out,println(a + “ ” + b);//128 -128 发生溢出
就会溢出,从而影响数据。
包装类
在Java中,八个基本数据类型对应八种包装类,基本数据类型在包装类过程中实现了装箱,使其拥有了对象的地位,并可以使用该对象对应类的方法,对应关系为byte – Byte, short – Short, int – Integer, long – Long, char – Character, boolean – Boolean, float – Float, double - Double。
装箱的方式如下:
Integer a = new Integer(1);//手动装箱,1也可以是其他变量;
Integer a = 1;//自动装箱,1也可以是其他变量;
此时变量a可以看做一个整型对象,并使用对应整型Integer类的方法。
包装类转为基本数据类型,拆箱的方法如下:
Integer a = 1;//先包装类一个变量;
int b = a.intvalue();//手动拆箱
int c = a;//自动拆箱
在Java包装类中存在缓存值,
Integer a = 100;
Integer b = 100;
Integer c = 1000;
Integer d = 1000;
System.out.print((a==b) + “ ” + (c==d));//true false;
Byte, Short, Long, Integer 的缓存范围为-128 ~ 127;Boolean, Byte全部被缓存(其对应基本数据类型范围在-128~127之内),Float, Double没有缓存。