String的不变性,LinkedList,Set和Map集合

一,String的不变性

1.1String是一个final类,代表字符串,字符串是常量;他们的值在创建之后不能被更改。

1.2String的赋值原理:直接在内存中查找,有没有你所赋值的字符串,如果存在这个字符,则把他的地址赋值给变量,如果不存在,创建这个字符串.然后把该字符串的地址赋值给变量。

例如:

  public static void main(String[] args) {

        String s1=new String("abc");
        String s2="abc";
        String s3="abc";
        System.out.println(s1==s2);//false
        System.out.println(s2==s3);//true


    }

这里所说的不可变是指创建的"abc"字符串的内存已经固定下来了,这个字符串会一直在内存中存在。是不可变的。

如图:

 s1重新赋值后找到内存为xyz的字符串,更改地址引用,如果没有内存中没有xyz这个地址,先创建xyz这个字符串然后把这个地址赋值给s1,而不是直接将abc变成xyz,因为它具有不变性。

1.3如果经常变化的字符串不推荐使用String定义,因为变化一次就要在储存中创建一个字符串(java中有一个强大的垃圾回收机制,自动释放垃圾资源),因此可以使用Stringbuffer。

常用方法:

1.3.1

根据ASCII码表而得97-104对应的英文字母是abcdefgh

1.3.2 

 

 输出结果是cde

1.3.3

1.3.4 endsWith()  

 输出是true

1.3.5  getBytes()  toCharArray()

  

1.3.6  indexOf()    lastIndexOf()   replace(a,b)

 1.3.7   substring()

1.3.8    split()

 1.3.9 trim()

          返回字符串的副本,忽略前导空白和尾部空白。即去除空格

 1.3.9  toLowerCase()  toUpperCase()

二,LinkedList集合

2.1LinkedList集合数据储存的是链表结构,查询慢,增删快。与ArrayList不同的是:ArrayList是数组结构,元素增删慢,查找快,日常使用最多的就是查找数据,遍历数据,所以ArrayList是最常用的集合。

 ArrayList新增元素是在最后面开辟新的空间,元素依次往后移动,空出来的位置,插入新元素。

LinkedList直接把两个元素的关键断开,构建与新元素的联系。

LinkedList提供了大量首尾操作的方法如下:

三,Set集合

3.1set接口和list接口一样,它所存的元素是不可重复的,并且元素都是无序的(即存和取的顺序不一致)

HashSet是根据对象的哈希值来确定元素在集合中的储存位置,因此具有良好的存取和查找性能,保证元素唯一性的方式依赖于:HashCode与equals方法。

 

 通俗的理解就是小学生的书包,添加元素就是直接把元素扔进去,没有任何顺序,所以元素不能重复

四,Map集合

概念:

Map是一种键值对(key-value)的集合,Map集合中每一个元素都包含一个键对象和一个值对象,其中键Key对象不允许重复,而值Value对象可以重复。

Map集合没有继承Collection接口,其提供的是key到value的映射,Map中不能包含相同的key值,每个key只能影射一个相同的value,key值还决定了存储对象在映射中的存储位置

map的常用方法:

1.添加:

put(K key,V value)

2.删除

remove(Object  key) 

 

例如: 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值