16、String、StringBuilder和StringBuffer的区别
- String类是final的,不可变,StringBuilder和StringBuffer可变;
- 大部分情况下的执行效率:StringBuilder > StringBuffer > String,但是类似String str = "abc"+"def"这种情况下,String的效率最高;
- String是线程安全的,因为String类是final的,StringBuffer也是线程安全的,StringBuilder不是线程安全的。
总结一下:
String适用于少量字符串操作的情况;
StringBuilder适用于单线程下进行大量操作的情况;
StringBuffer适用于多线程下进行大量操作的情况。
17、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
public class Java8Tester { public String translate(String str) { String tempStr = ""; try { //按照ISO-8859-1进行解码 byte[] b = str.getBytes("ISO-8859-1"); //按照GBK重新进行编码 tempStr = new String(b, "GBK"); tempStr = tempStr.trim(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return tempStr; } }
19、&和&&的区别?
相同点:&和&&都可以用作逻辑与的运算符,表示逻辑与
不同点:
- &不具备短路功能,&两边都要计算,而&&具有短路功能,即&&左边为false结果就为false,右边不用计算;
- &还可以表示按位与操作,而&&不行。
20、在Java中,如何跳出当前的多重嵌套循环?
java中使用带有标号的break语句跳出多重循环,即在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出。