1. == 和equals
==比较的是地址,基本数据类型因为储存在栈中,所以相同值比较出来的结果为true,引用类型因为引用在栈中,对象在堆中,所以比较出来的结果为false。对引用类型来说,==比较的是两个引用是否指向同一对象。
Equals比较的是两个引用数据的内容,equals方法是可以重写的。而基本数据类型不存在equals这个说法。
2.基本数据类型
Java基本数据类型包括
byte 、char、short、int、long、double、float、boolean
3.基本数据类型的封装类型
每个 基本数据类型都会有对应的封装类,java提供了数据类型的自动拆箱和自动装箱
拆箱:将封装类型转换为基本类型
装箱:基本类型转换成封装类型
4.自动拆箱,自动装箱
拆箱:将封装类型转换为基本类型
装箱:基本类型转换成封装类型
new Integer(2).equals(2)过程:先将2自动装箱成为封装类型,然后比较值
5.几种方法
Valueof,返回的是Integer类型,128—127直接返回引用,否则返回新的对象
Intvalue 返回的是int类型
parseInt 返回的是int类型
6.几种常见的比较
1. Integer.valueOf(129) == Integer.valueOf(129) false 129 返回的是新的对象
2. new Integer(23).equals(23) true 存在自动装箱
3.Integer.valueOf(127) == Integer.valueOf(127) true 129 返回的是同一个对象的引用
7.传值和传引用
1.基本数据类型传的是值,所以传过去的值改变不影响原来的变量
2.引用数据类型传的是地址,所以传过去的值改变直接改变原来的变量(指针改变)
3.String比较特殊,传递的是值
8.String
String a = “a” + “b” 实例化了三个string对象,因为String是不可变的 final类型的
String a = “a”
String b = “a” 则a == b为true 因为出现过的string会放在常量池中,他们指向常量池的同一个地址
String a = new String(“a”);
String b = new String(“b”);
则a == b为false 因为这是两个对象
9.强制类型转换
基本数据类型从小到大排序为:
Boolean, byte,char,short,int,long,float,double
Java中有隐式数据转换,即占用空间少的可以往大的上边转换
强制类型转换:需要手动转换,不转换就报错,会损失精度
Short没有加减法,因为加减法是int的,需要强制转换为short。
默认浮点类型为double,所以double类型可以不加d,而float类型必须加f
默认整数类型为int,long类型可以不加l,那是强制转换为int类型,当超过int 的取值范围,则必须加l。