服了,list.add()也会报错!!!

1.什么时候用StringBuilder?

颜sir,我好像只在“面试宝典”中看到过StringBuilder,其余时间都没有使用过。什么时候会用到StringBuilder呢?

答:String的引用值不能改变,因此如果遇到类似以下频繁更改String引用值的时候,就需要考虑使用StringBuffer或StringBuilder。

String str = "" ;
for(int i=0;i<1000;i++){
   str += i ;//str的指向会更改1000次
}

到底用StringBuffer还是StringBuilder?答案其实就像“鱼和狮子谁适合游泳?”一样。鱼的特点是游泳、狮子的特点是凶猛,因此只需要看看每个类的【特点】,自然就知道答案了。

StringBuffer:线程安全

StringBuilder: 非线程安全

因此,如果作为一个方法的局部变量,就更适合使用StringBuilder。因为是在一个方法的内部,被多个线程共享的概率低;而如果是所有方法共享的全局变量、或者高并发经常访问的某个变量,就适合用StringBuffer,保证线程安全。


2.服了,list.add()也会报错!!!

public static void main(String[] args) {
   String[] names = {"zs","ls","ww"} ;
   List<String> nameList = Arrays.asList(names);
   nameList.add("zl") ;
}

代码第三行,竟然报这个异常???

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)
    at SingletonD.main(SingletonD.java:24)

答:异常已经说的很明白了,UnsupportedOperationException,翻译过来就是:不支持的操作。你也说的很明白了,第三行报错。结合起来就是:第三行add()是一个不支持的操作。为什么呢?因为Arrays.asList()的返回值ArrayList并你心里所想的那个ArrayList。什么意思?在JDK中有很多个ArrayList类型,Arrays.asList()返回的ArrayList实际是Arrays的一个内部类ArrayList(即,不是Collection中常见的那个ArrayList)。这个内部类ArrayList的方法列表如下,可见根本不支持add()方法。

3.Java中有引用传递吗?

答:没有,在Java中只有值传递(Pass By Value)。文字说起来太费劲,直接看视频吧

 https://www.bilibili.com/video/av53951575?p=35

10行代码2道题,全答对的你月薪多少了?

答疑 | synchronized有指令重排序的功能吗?

Ajax - 使用Ajax传递Json数据

猜你喜欢

转载自blog.csdn.net/yanqun007/article/details/103309540
今日推荐