java基础学习

Object

方法解析

wait...

String 与StringBuffer 与StringBuild的区别

String    StringBuffer    StringBuilder
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间 StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量 ,默认容量是16;每次扩容为:*2 + 2
int newCapacity = (value.length << 1) + 2;
可变类,速度更快
不可变    可变   可变
  线程安全    线程不安全
  多线程操作字符串  append方法添加synchronize,降低了效率 单线程操作字符串
  • String是不可变的,其他可变的
    public final class String
        /** The value is used for character storage. */
        // 1.私有的没有提供set方法不能改变;2.final修饰,一旦初始化后也是不能改变; 凡是我们自以为的改变只是引用指向了新的对象
        private final char value[];
    
        /** Cache the hash code for the string */
        private int hash; // Default to 0

     

  • 非变量字符串之间累加使用String +效率高
String me = "my name" + "is" +"kangkang";
  • 一般变量拼接不考虑线程安全优先考虑StringBuild

 


集合

Arraylist与LinkedList

HashMap(数组+链表+红黑树)

ConcurrentHashMap和Collections.synchronizedMap(会同步整个对象)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值