2021-04-01

你知道有哪些避免空指针的方法?
1、字符串比较,常量放前面
2、用String.valueOf()代替toString方法
3、强制类型转换,提前判断非空

什么是包装类,有什么作用?
因为Java是面向对象的语言,基本数据类型无法作为一个对象使用,比如说集合里面放元素要求的就是一个对象,这个时候Java就为每一个基本数据类型提供了一个对应的包装类。基本数据类型通过自动装箱可以转换成包装类,可以通过操作包装类对象来解决基本数据类型中涉及到对象操作的问题。

什么是自动拆箱和自动装箱?
自动拆箱:包装类中提供了xxxvalue方法,将包装类转换成基本数据类型;自动装箱:包装类中提供类valueOf方法,将基本数据类型转换成包装类。

你怎么理解Java中的强制类型转换和自动类型提升?
强制类型转换就是将一种数据类型转强制转换成另一种数据类型。最常见于基本数据类型中的大数据类型转换成小的数据类型,比如说int转换成byte类型,这时候容易丢失精度,而且也要考虑小的数据类型的取值范围,如果要转换的数超出这个数据范围则会报错。自动类型提升的话,就是一种小转大的情况,比如byte和int运算时,byte会自动提升为int类型再运算。

String常用方法有哪些?
1、subString用于截取字符串
2、trim用于去除字符串首位空白
3、indexOf 用于获取指定字符的索引
4、valueOf返会字符类型

String是可变的吗?
不是,因为string在声明的时候,内部是fianl修饰的,而且String类型的数据是存储在字符串常量池中,常量池中的数据不可变。

String字符串如何进行反转?
使用StringBuffer和StringBuilder的reverse()方法

为什么不能用+拼接字符串?
字符串String内部提供改变自身的方法,任何对String类型的操作都是在创建新的字符串。通过+拼接的新字符串是新的字符串对象。

StringBuild和StringBuffer的区别?
StringBuild和StringBuffer都是用来操作字符串的,一般用于字符串拼接。stringBuild是线程不安全的,stringbuffer是线程安全的,因为其内部使用synchronized关键字修饰。考虑线程安全使用stringBuffer考虑效率使用StringBuild,因为Stringbuffer里面做了很多线程同步的方法。

hashcode有什么作用?
hashcode是object提供的用于计算对象地址的一种方法,返回int类型的哈希码值,代表对象在内存中的存储位置。在比较一个类是否相同时,往往需要重写equals方法,重写equals方法的同时也会重写hashcode方法。

什么是hash冲突?
两个对象equals相同,hashcode规定也必须相同,但反过来就不一定,hashcode相同,但equals并不相同,这就是传说的hash冲突。
怎么解决hash冲突?
链地址法:将所有哈希地址相同的记录都连接一个链表中。hashMap中解决哈希冲突就使用了这种方法

金额保证精度不丢失?
1.使用BigDecimal(String val) 进行运算。
2.数据库存储金额,一般有整型和浮点型两存储方式。如果有汇率转换的,建议使用浮点数decimal进行存储,可以灵活控制精度,decimal对应Java类中的BigDecimal。整型使用的是long数据类型,单位为分。

你可能感兴趣的:(2021-04-01)