目录
1.基本数据类型和包装类的区别
1.是否能够调用方法:包装类可以使用泛型,基本数据类型不能;且包装类能够调用其他方法
2.默认值不同:基本数据类型为相应默认值(整型-0,浮点型-0.0等),包装类为null
3.占用空间不同:基本数据类型相对于包装类而言占用的空间很小
4.存储位置:基本数据类型存在虚拟机栈中,包装类存储在Java堆中
2.包装类型的缓存机制
1.对于包装类型中的Byte、Short、Integer、Long创建了[-128,127]的相应类型缓存数据2.Character创建了[0,127]的缓存数据
3.Boolean返回True或者False两种缓存数据
3.Double和Float没有实现缓存机制
比如,若比较整型包装类的对象时,使用equals方法比较,如果比较的是缓存中的数据,则直接返回true
3.浮点数运算时的精度损失问题
计算机中保存数字时,是使用二进制来保存的,宽度有限;若为无限循环小数,存储在计算机中是会被截断的,因此造成了精度损失问题。
4.如何解决精度损失:BigDecimal
BigDecimal:解决浮点数运算精度丢失,先使用BigDecimal定义浮点数的值,然后进行浮点数的运算操作即可。
5.BigDecimal的常见方法
1.创建
入参为String的构造方法
BigDecimal的valueOf方法
BigDecimal b1 = new BigDecimal("0.1");
BigDecimal b2 = BigDecimal.valueOf(0.1);
2.数据的加减乘除
BigDecimal b1 = new BigDecimal("6.1");
BigDecimal b2 = new BigDecimal("0.5");
BigDecimal add = b1.add(b2);
BigDecimal subtract = b1.subtract(b2);
BigDecimal multiply = b1.multiply(b2);
BigDecimal divide = b1.divide(b2);
3.值得比较
BigDecimal b1 = new BigDecimal("0.1");
BigDecimal b2 = BigDecimal.valueOf(0.1);
int result = b1.compareTo(b2);
result:-1:b1 < b2
0:a = b
1:a > b
6.BigDecimal的 “等于” 问题
1.必须使用compareTo()方法
2.使用equals()和compareTo()的不同点
equals():比较值大小的同时会比较精度
compareTo():比较值大小的同时会忽略精度
BigDecimal b1 = new BigDecimal("1");
BigDecimal b2 = new BigDecimal("1.0");
int result1 = b1.compareTo(b2);//true
boolean result2 = b1.equals(b2);//false
7. 字符型常量和字符串常量的区别
1.符号:字符型是单引号,字符串型是双引号
2.本质:字符型是ASCII值,可以进行运算;字符串型是一个地址,表示在内存中的位置
3.内存:字符型占两个字节,字符串型根据内容而定
8.封装
将属性隐藏在对象内部,不允许外部对象直接访问对象的内部信息。
9.继承
子类使用extends继承父类,从而拥有父类的属性与方法
注意:子类具有父类的私有方法与属性,但无法直接调用
子类可以扩展父类的功能
10.多态
父类的引用指向子类的实例
注意:引用变量调用的方法,在程序运行期间才能确定
若子类重写了父类的方法,则执行时会采用子类重写的方法,若未重写,则执行父类的方法
多态无法调用子类存在但父类不存在的方法