1、equals和==区别
==:对于基本数据类型,比较的是值,对于对象,比较的是内存中的地址
equals:属于object,默认比较对象的内存地址,但是库中一些类会覆盖equals这个方法。String中的equals,首先判断==,如果地址相同,返回true,如果地址不同,再比较字符串是否相等。
2、Switch能否能用String做参数
java7之前不可以,后来可以,还能用byte、short、char、int,Enum
3、String、StringBuffer和StringBuilder的区别
String: 使用字符数组保存字符串:private final char value[];关键字final决定了String对象不可变。StringBuilder和StringBuffer继承自AbStractStringBuilder类,AbstractStringBuilder类也是使用字符数组保存字符串:char[] value;没有final,可知这两个对象都是可变的。
String对象不可变,也就可以理解为常量,显然线程安全。StringBuffer对方法加了同步锁,因此是线程安全的。StringBuilder没有加锁,是非线程安全的。
4、String常用函数
(1)split 函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回;split函数原型为:String[] split(String regex)。参数regex不是一个简单的字符串,而是一个正则表达式。因此,对于正则表达式中的关键字你需要使用转意符\,例如.和|都是转义字符,必须得加"\\":
如果用.作为分隔的话,必须写为String.split("\\."),而不能直接这样String.split(".");
如果用|作为分隔的话,必须写为String.split("\\|"),而不能直接这样String.split("|");
如果在一个字符串中有多个分隔符,可以用|作为连字符,比如待分割的字符串为String s="my; name,is HuaChao",如果希望把单词提取出来(以标点符号和空格为分割字符),可以写为:s.split(",| |;");注意, 两个|之间有空格,",| |;"表示,以,或空格以及;分割字符串。
(2)replace、replaceAll、replaceFirst
replace:原型为String replace(char oldChar, char newChar),即将所有的oldChar字符替换为newChar字符
replace:原型为String replace(CharSequence target, CharSequence replacement),即将所有的target字符串替换为replacement字符串
replaceAll:原型为String replaceAll(String regex, String replacement),参数regex从名称可以看出,它是一个正则表达式。replacement为替换的新字符串,即将原字符串中,所有满足正则表达式regex的部分替换为replacement
replaceFirst:原型为String replaceFirst(String regex, String replacement),跟replaceAll很像,只不过replaceFirst是替换第一个满足正则表达式regex的部分