一.final在Java中的作用,有哪些用法?
(1) final修饰类,该类不可以被继承。
(2) final修饰成员方法,该成员方法不可以被子类重写。
(3) final修饰变量分成两种层面,如果修饰的是基本类型的变量,则基本类型变量的值不可以被修改(int),如果修饰的
是引用数据类型(Order),则引用数据类型的引用地址值不可以被二次赋值。
final修饰成员变量,成员变量要么在声明时赋值,要么在所有的构造方法中出现被赋值。
final修饰局部变量,局部变量只可以被赋值一次,可以在声明时赋值,也可以先声明再赋值。
二.static关键字有什么作用?
(1) 修饰成员变量,会在类加载的链接阶段就进行初始化,而且所有对象都共享同一份成员变量,静态变量
属于类,可以通过类名.静态变量名访问,也可以通过对象名.静态变量名访问。
实际上更多情况下静态变量都是为了本类的静态方法而存在的。
(2) 修饰成员方法,静态方法可以直接被类名调用,一般会作为工具类的方法存在。
(3) 静态内部类,可以直接通过在外部类中封装一些属性和方法,并且被外部类的静态内容访问。
(4) 静态代码块,会在类加载的时候执行一次,一般用于初始化一些数据。
(5) 静态导包,可以直接将静态方法导入到某个类中,在本类中使用导入类的静态方法不需要加类名,直接使
用即可。
三.String str="aaa",与String str = new String("aaa")一样吗?
str都是aaa,但是第一种情况下只会在字符串常量池中存在,在堆内存中不存在,所以有可能创建一个对
象,也有可能不创建对象(在常量池已存在的情况下)。
第二种情况会先在堆内存中开辟空间,然后再去常量池中判断是否存在aaa内容,所以有可能创建一个对象
也有可能创建两个对象。
四.Java中的包装类都是那些?
int对应Integer,byte对应Byte,short对应Short,long对应Long,float对应Float,double对应
Double,boolean对应Boolean,char对应Character。
五.针对浮点型数据运算出现的误差的问题,怎么解决?
使用BigDecimal类将浮点类型转换为String类型之后包装为对象,通过对应的成员方法
(add/subtract/multiply/divide)进行操作。