8.常用类、集合框架

常用类、集合框架

1.常用类

1.1 String、stringbuilder、stringbuffer

可变性:String是不可变的字符串,stringbuilder、stringbuffer都有字符串缓冲区,所以长度可变,由apend和insert方法添加元素实现。
线程安全性:stringbuilder一般用在单线程,多线程使用时不保证线程安全,但效率高;stringbuffer一般用在多线程,多线程使用时可保证线程安全,但效率低。
数据量大小性:String用于操作数据量较小时,stringbuilder和stringbuffer用于操作数据量较大时。
方法共性:stringbuilder和stringbuffer的方法都一样,只是stringbuffer的方法多了个同步锁以保证线程安全。

1.2 Date、SimpleDateFormat、Calendar

1.3 String.intern()方法详解

package Access;
public class Test {
    public static void main(String[] args) {
        String str1 = new StringBuilder("58").append("tongcheng").toString();
        System.out.println(str1);
        System.out.println(str1.intern());
        System.out.println(str1 == str1.intern());
        System.out.println();
        
        //String str2 = new StringBuilder("ja").append("va").toString();    //不保存在常量池,false
        String str2 = "java";   //保存在了常量池,true
        System.out.println(str2);
        System.out.println(str2.intern());
        System.out.println(str2 == str2.intern());
        System.out.println();
        /*String.intern()方法是一种手动将字符串加入常量池中的方法,原理如下:如果在常量池中存在与调用intern()方法的字符串等值的字符串,
        就直接返回常量池中相应字符串的引用,否则在常量池中复制一份该字符串,并将其引用返回(Jdk7中会直接在常量池中保存当前字符串的引用);
        Jdk6 中常量池位于PremGen区,大小受限,不建议使用String.intern()方法,不过Jdk7 将常量池移到了Java堆区,大小可控,
        可以重新考虑使用String.intern()方法,但是由对比测试可知,使用该方法的耗时不容忽视,所以需要慎重考虑该方法的使用;
        String.intern()方法主要适用于程序中需要保存有限个会被反复使用的值的场景,这样可以减少内存消耗,同时在进行比较操作时减少时耗,提高程序性能。
        */
    }
}

1.4 string3种比较方法

package Access;
public class Test {
    public static void main(String[] args) {
        String s1 = "Hello";
        String s2 = new String("Hallo");
        System.out.println(s1.equals(s2)); //false,值比较
        System.out.println(s1==s2);//false,物理地址值比较
        System.out.println(s1.compareTo(s2)); //4,大小比较(这里因为e比a大4,所以返回4表示s1大)
    }
}

2.集合框架

1.单列集合:Collection、List、Set、ArrayList、LinkedList、HashSet、TreeSet、LinkedHashSet、

2.双列集合:Map、HashMap、linkedHashMap、Properties(Hashtable的子类)

1.1 Collection接口实现了迭代器Iterable,重写了forEarch方法实现增强for循环,所以其子类可以使用普通for循环、迭代器(Iterator)、增强for循环。
1.2 List(元素有序,可重复),两个子类分别为ArrayList和linkedList。ArrayList底层采用数组结构(查询快、增删慢),linkedList底层采用双向链表结构(增删快、查询慢)
1.3 Set(元素无序,不可重复)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值