API知识总结

1 String

1.1 String,StringBuilder,StringBuffer的区别

1.String字符串是不可变的
2.在修改字符串操作比较多的时候使用StringBuilder或StringBuffer
3.在要求线程安全的情况下用StringBuffer是线程安全的,它的执行效率比StringBuilder要低
4.在不要求线程安全的情况下用StringBuilder,是线程不安全的,它的执行效率比StringBuffer要高

1.2 一些主要的API的使用

char charAt(int index) 返回指定索引处的 char 值。
String concat(String str) 将指定字符串连接到此字符串的结尾。
boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束。
boolean equals(Object anObject) 将此字符串与指定的对象比较。
int hashCode() 返回此字符串的哈希码。
int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引
int lastIndexOf(String str) 返回指定子字符串在此字符串中最右边出现处的索引。
boolean isEmpty() 当且仅当 length() 为 0 时返回 true。
int length() 返回此字符串的长度。
String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。
boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。
String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。
String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。
char[] toCharArray() 将此字符串转换为一个新的字符数组。
String toLowerCase() 全转小写
String toUpperCase() 全转大写
String trim() 返回字符串的副本,忽略前导空白和尾部空白。
static String valueOf(int i) 返回 int 参数的字符串表示形式。

2 集合

2.1 Collection

2.1.1 List

定义:有序列表,允许存放重复的元素
子类:LinkedList ArrayList Vector

2.1.1.1Linked

双向链表实现,增删快,查询慢(线程不安全)

2.1.1.2ArrayList

数组实现,查询快,增删慢,轻量级(线程不安全)

2.1.1.3 Vector

数组实现,重量级(线程安全、使用少)

2.1.1.4常用方法

void add(int index, Object element) :添加对象element到位置index上
boolean addAll(int index, Collection collection) :在index位置后添加容器collection中所有的元素
Object get(int index) :取出下标为index的位置的元素
int indexOf(Object element) :查找对象element 在List中第一次出现的位置
int lastIndexOf(Object element) :查找对象element 在List中最后出现的位置
Object remove(int index) :删除index位置上的元素
ListIterator listIterator(int startIndex) :返回一个ListIterator 跌代器,开始位置为startIndex
List subList(int fromIndex, int toIndex) :返回一个子列表List ,元素存放为从 fromIndex 到toIndex之前的一个元素

2.1.2Set

无序集合,不允许存放重复的元素,允许使用null元素

2.1.2.1 HashSet

HashSet:equals返回true,hashCode返回相同的整数,哈希表:存储的数据是无序的

2.1.2.2LinkedHashSet

次实现与HashSet的不同之处在于后者维护这一个运行于所有条目的双重链接列表,存储的数据是有序的

2.2 Map

它提供了一组键值的映射,其中存储的每个对象都有一个相应的关键字(key),关键字决定了对象在Map中的存储位置,关键字应该是唯一的,每个key只能映射一个value

2.2.1 HashMap

键值对,key不能重复,但是value可以重复,key的实现就是HashSet,value对应这放;允许null的间或值

2.2.2 TreeMap

线程安全的,不允许null的键或值;

2.2.3 LinkedHashMap

对key排好序的Map; key 就是TreeSet, value对应每个key; key要实现Comparable接口或TreeMap有自己的构造器

2.2.4 Hashtable

此实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。存储的数据是有序的。

3线程

3.1进程

进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个字节的地址空间,至少有5种基本状态,他们是:初始态,执行态,等待状态,就绪状态,终止状态

3.2线程

线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源

3.3区别

1.根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位
2.在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换回有较大的开销;
线程可以看作轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自读独立的运行栈和程序计数器(PC),线程之间切换的开销小
3.内存分配方面:系统在运行的时候回为每个进程分配不同的内存空间
而对县城而言,处理CPU外,系统不会为线程分配内存(线程所使用的资源来自所属京城的资源),线程组之间只能共享资源
4.包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻泉进程或者轻量级进程

3.4生命周期

3.4.1新建(NEW)

定义:新建一个线程对象

3.4.2可运行(RUNNABLE)

定义:线程对象创建后,其他线程(比如main线程)调用了给线程的start()方法,该状态的线程位与可运行线程池中,等待被线程调度选中,获取cpu的使用权
1.可运行转台只能说你有资格运行,雕图程序没有挑选到你,你就永远是可运行状态
2.调用线程的start()方法,此线程进入可运行状态
3.当前线程sleep()方法结束,其他线程join()结束,等待用户输入完毕,某个线程拿到对象锁,这些线程也将进入可运行状态
4.当前线程时间片用完了,调用当前线程的yield()方法,当前线程进入可运行状态
5.锁池中的线程拿到对象锁后,进入可运行状态

3.4.3运行(RUNNING)

可运行状态(runnable)的线程获得了cup时间片(timeslice),执行程序代码

3.4.4阻塞(BLOCKED)

阻塞状态是指线程因为某种原因放弃了CPU使用权,也即让出了cpu timeslice,暂时停止运行,直到线程进入可运行状态,才有机会再次获得cpu timeslice 转到运行状态,阻塞的情况分为三种:
1.等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。
2.同步阻塞:运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。
3.其他阻塞:运行(running) 的线程执行Thread.sleep(long ms)或t.join()方法,或者发出来I/O请求时,JVM会把该线程置为阻塞状态,当sleep() 状态超时,join()等待线程终止或者超时,或者I/O处理完毕时,线程重新转入可运行(runnable)状态

3.4.5死亡(DEAD)

线程run(),main()方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期,死亡的线程不可再次复生

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值