🪂 字符串使用==和equals判等的区别?
==是对两个字符串变量的引用地址值是否相等进行判断,就算字符串的内容相等如果存储的位置不同也会返回false。String类中重写了Object的equals方法使之可以对字符串的内容进行判等,查看源码不难发现重写之后的equals方法是对两个字符串的地址、长度、每一个字符顺序进行判断,在判断的过程中但凡有一个不等就直接返回false。
趁热打铁,结合字符串的两种实例化方式和两种判等方式找几个题做做,答案放在文末了,记得去对照一下 补充一个知识点,如果想忽略字母大小写比较两个字符串的内容是否相等,可以使用equalsIgnoreCase方法,用法与equals相同
🪂 空串""和null串有啥区别?
空串是一个长度为0内容为空的字符串,属于是一个字符串对象;null串表示这个变量并未引用任何的对象或者基本数据类型值,属于是一个供引用数据变量引用的值。空串引用String的API 会返回值,但是null串调用String的API 的话会报NullPointerException的错误。一般情况下都会使用if(str != null && str.length() != 0)对字符串进行检查,符合条件才会使用这个字符串。
🪂 这些String的常见API你都掌握了吗?
拓展一个compareTo方法,该方法会对比两个字符串并返回一个int数值,对比规则:从第一个字符开始相比较,返回第一个不同的两个字符的ASCII码的差值(前减后),如果说一个字符串是另一个的字串就返回二者的长度差
🪂 String StringBuilder StringBuffer都是啥?
这三种都是Java中用来操作字符串的类。区别就是String声明一个不可变的对象,每次操作都会生成一个新的对象,并将新的对象地址赋给原来的字符串变量,而StringBuilder和StringBuffer都是在原来的对象上进行操作并不会产生新的对象,所以说在需要经常改变字符串内容的情况下最好使用这两种类。 StringBuilder和StringBuffer也是有区别的,StringBuffer线程安全但是性能相对较差,StringBuilder线程不安全但是性能较高,于是单线程的情况下推荐使用StringBuilder,多线程的话就使用安全的StringBuffer
字符串的两种实例化方式和两种判等方式的问题答案