Java面向对象基础知识(三)

目录

1.基本数据类型和包装类的区别

2.包装类型的缓存机制

3.浮点数运算时的精度损失问题

4.如何解决精度损失:BigDecimal

5.BigDecimal的常见方法

1.创建

2.数据的加减乘除

3.值得比较

6.BigDecimal的 “等于” 问题

7. 字符型常量和字符串常量的区别

8.封装

9.继承

10.多态


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.多态

        父类的引用指向子类的实例

注意:引用变量调用的方法,在程序运行期间才能确定

           若子类重写了父类的方法,则执行时会采用子类重写的方法,若未重写,则执行父类的方法

           多态无法调用子类存在但父类不存在的方法

你可能感兴趣的:(java,开发语言)