(三)数据类型
(1)基本数据类型
1.基本数据类型及所占字节:
整型:byte:1,1个字节=8个bit(位),-128——127
short:2、-32768——32767。不常用
int:4、-2147483648——2147483647
long:8 解决int类型数据不足的问题 long a=200L;
小数:表示数字并不精确
float:4(单精度浮点数,精确到6到7位)float a=200F;
double:8(双精度浮点数,精确到16到17位)
其他:char:2 可以表示一个unicode字符,可以是中文,本质是使用0----65535整数,可以进行数学运算。
boolean:不定。一般一个字节,当用数组存储时就不定 (true、false)
注意:
在java中,整型字面常量默认为int类型,如果希望使用long类型,则添加l或L后缀。
小数类型字面常量默认为double类型。如果希望使用float类型,则添加f或F后缀。
(2)引用类型:
包装类型
包装类型的缓存机制
Java基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。
Byte,Short,Integer,Long这4种包装类默认创建了数值[-128,127]的相应类型的缓存数据(只有Integer类型可以改上限),Character创建了数值在[0,127]范围的缓存数据,Boolean直接返回True or False。
Integer i1=40 这一行代码会发生装箱,也就是说这行代码等价于 Integer i1=Integer.valueOf(40) 。因此,i1 直接使用的是缓存中的对象。而Integer i2 = new Integer(40) 会直接创建新的对象。
对于Integer i=?在-128至127之间的赋值,Integer对象是在IntegerCache.cache产生,会复用已有对象,这个区间的Integer值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐全部使用equals方法来进行判断。
(3)区别
基本数据类型:性能高。
基本数据类型和包装类型的区别:
1、包装类是对象,有方法和字段,对象的调用是通过引用对象的地址,而基本类型不是。
2、包装类型是引用的传递,基本类型是值的传递。
3、初始值不同:int的初始值位0,boolean的初始值为false;包装类型的初始值null。
4、声明的方式不同:基本类型不需要new关键字;包装类型需要new关键字创建对象分配内存空间。
5、存储位置不同:基本数据类型直接将值保存在堆中;包装类型的对象存储在堆中,通过对象的引用来调用。
6、使用的方式不同:基本数据类型直接赋值就可以;包装类型通常是在集合时使用。
(4)装箱和拆箱:
拆箱:java自动调用xxxValue(),将对象转换为基本数据类型。
装箱:将基本数据类型转换为对应的包装类型,包装类.valueOf(a)。
valueOf():用于把基本数据类型转化成封装类型。如Integer.valueOf(int对象)
xxValue():用于把封装类型转化为基本数据类型,如Integer对象.intValue()
parseXx():用于把String对象转化成基本数据类型,如Integer.parseInt(“String对象”)
toString():将封装类型转化成String类型
获取封装类的最大最小值,如:
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
new出来的对象永远不相等,也就是==比较出来的必定是false.
两个引用使用==或者!=,是用来判断两个引用是否是指向同一个对象。
对基本数据类型和引用类型的比较时,会先进行拆箱
(五)运算符
1.算术运算符:+ - * / %,注意:结果数据的取值范围。/如果两个操作数都是整数,则为整除。若其中一个操作数为小数,则为小数除。%取余,支持两个操作数为小数。双目。
2.比较运算符:> < >= <= == !=,比较运算有结果,布尔类型。双目。
3.逻辑运算符:&& 与 || 或,!非 and or not。运算结果布尔类型,并且操作数也是布尔类型。注意:短路。&&和||是双目。
4.赋值运算符:=。复合赋值运算符:+= -= *= /= %= ++ -- &= |= ~= ^=。 ++代表自增1,--代表自减1。自增自减运算符支持两种写法,前缀式和后缀式。单独作为一句时,效果完全相同。
后缀式:先取值,后运算
前缀式:先运算,后取值
5.位运算符:& | ~ ^ << >>。与运算:同为1,则为1。或运算:同为0,则为0,异或:位相同,则为0,非:0则1,1则0
6.其它运算符:a?b:c;条件运算符。a是一个布尔值,条件判断
单目运算符:逻辑非,++,--,+正号,-负号
双目运算符:
三目运算符:a?b:c
运算符的优先级:
1.单目>双目
2.小括号>算术>比较>逻辑>赋值>条件
快捷键:
ctrl + /:单行注释
ctrl + shift + /:多行注释
ctrl + z:undo,返回上一步操作
ctrl + y:删除当前行
ctrl + alt + L:格式化代码。