服了,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数据

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值