A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王震阳老师   /  2014-7-26 21:42  /  12777 人查看  /  148 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

领个题  
回复 使用道具 举报
领个题  
回复 使用道具 举报
领题了 领题了
回复 使用道具 举报
阳哥。。。


Hashset还没有看 ,刚刚看到ArrayList先总结了  后来自己再把HashSet加上去希望给点分吧,谢谢 :P

Exam6.rar

2.33 KB, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
阳哥领题,
回复 使用道具 举报
看看这个
回复 使用道具 举报

可以。
  1. class  Exam6
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println("Hello World!");
  6.         }
  7. }
  8. /*
  9. String:
  10. String类型的变量是一个类类型的变量,值一旦初始化就不能被更改了。
  11. String类是用于描述字符串事物。
  12. 那么它就提供了多个方法对字符串进行操作。
  13. String类型是可序列化的,可比较的字符序列。

  14. String类中的常用方法

  15. 1 获取。
  16.         1.1 字符串中包含的字符数,也就是字符串的长度。
  17.                 int length():获取长度。
  18.         1.2 根据位置获取位置上的字符。
  19.                 char charAt(int index).
  20.         1.3 根据字符获取该字符在字符串中的位置。
  21.             int indexOf(int ch);返回的是ch在字符串中第一次出现的位置。
  22.                 int indexOf(int ch,int fromIndex) 从fromIndex指定位置开始获取,ch在字符串中出现的位置。

  23.                 int indexOf(String str);返回的是字符串str第一次出现的位置。
  24.                 int indexOf(String str,int fromIndex) 从fromIndex指定位置开始获取,ch在字符串中出现的位置。
  25.                
  26.                 int lastIndexOf(String str);返回的是字符串str从最右边开始向左寻找,第一次出现的位置。
  27.                 int lastIndexOf(String str,int fromIndex)返回的是字符串str从右边指定位置开始寻找,第一次出现的位置。
  28. 2 判断
  29.         2.1 字符串中是否包含某一个子串。
  30.                 boolean contains(str):
  31.                 特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1,表示该str不再该字符串中。

  32.                 而且该方法既可以判断,又可以获取出现的位置。
  33.         2.2 字符中是否有内容。
  34.                 boolean isEmpty():原理就是判断长度是否为零。
  35.         2.3 字符串是否是以指定内容开头。
  36.                 boolean startsWith(String str);
  37.         2.4 字符串是否是以指定内容结尾。
  38.                 booean endsWith(String str)
  39.         2.5 判断字符串的内容是否相同。复写了Object类中的equals方法。
  40.                 boolean equals(String str)
  41.         2.6 判断字符串的内容是否相同。并忽略大小写。
  42.                 boolean equalsIgnoreCase(String str)。

  43. 3 转换
  44.         3.1 将字符数组转成字符串。char[] date to String str
  45.         构造函数:String(char[])
  46.                           String(char[],offset,count):将字符数组的一部分转换为字符串。

  47.         静态方法:
  48.                         static String copyValueOf(char[]);
  49.                         copyValueOf(char[] data,int offset,int count)

  50.                         static String valueOf(char[] data)
  51.                         static String valueOf(char[] data,int offset,int count)

  52.         3.2 将字符串转成字符数组。String str to char[] data
  53.                 char[] toCharArray()
  54.         3.3 将字节数组转成字符串。byte[] data to String str
  55.                 String(byte [])
  56.                 String(byte[],offset,count)
  57.         3.4 将字符串传承字节数组。String str to byte[] data
  58.                 byte[] getBytes():
  59.         3.5 将基本数据类型转成字符串。
  60.                 String valueOf(int)

  61.         特殊的地方:字符串和字节数组在转换的过程中,是可以指定编码表的。
  62. 4 替换
  63.         String replace(oldchar,newchar)
  64. 5 切割
  65.         String[] split(regex)
  66. 6 子串。获取字符串中的一部分
  67.         String substring(int beginIndex)
  68.         String substring(int beginIndex,int endIndex)//取开头不取结尾。

  69. 7 转换,去除空格,比较。
  70.         7.1 将字符串转成大写或者小写。
  71.                 String toUpperCase();
  72.                 String toLowerCase();
  73.         7.2 将字符串两端的空格去除。
  74.                 String trim();
  75.         7.3 对两个字符串进行自然顺序的比较。
  76.                 int compareTo(String);



  77. StringBuffer:
  78. 是字符串缓冲区,是一个容器。




  79. 缓冲区的三个特点:
  80. 1 而且长度是可变化的。
  81. 2 可以直接操作多个数据类型。
  82. 3 最终会通过toString方法编程字符串。

  83. 缓冲区里操作:

  84. C create U update R read D delete
  85. 1 存储。
  86.         StringBuffer append():将指定数据作为参数添加到已有数据的结尾处。
  87.         StringBuffer insert(index,数据):可以将数据插入到指定index位置。
  88. 2 删除。
  89.         StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
  90.         StringBuffer deleteCharAt(index):删除指定位置的数据。
  91. 3 获取。
  92.         char charAt(int index)
  93.         int indexOf(String str)
  94.         int lastIndexOf(String str)
  95.         int length()
  96.         String substring(int start,int end)
  97. 4 修改。
  98.         StringBuffer replace(int start,int end,String str):替换一段字符串
  99.         void setCharAt(index,char):替换一个字符
  100. 5 反转
  101.         StringBuffer reverse()。
  102. 6 将缓冲区中的指定数据传到指定数组中,
  103.         getChars(int srcbegin,int srcend,char[] chs,int chsbegin)

  104. JDK版本1.5之后出现了StringBuilder

  105. StringBuffer是线程同步。
  106. StringBuilder是线程不同步。

  107. 以后开发,建议使用StringBuilder。
  108. 升级三个因素:
  109. 1 简化操作。
  110. 2 提高效率。
  111. 3 更加安全。



  112. ArrayList:
  113. List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。
  114. 除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小

  115. ArrayList底层的数据结构使用的是数组结构。特点在于:查询速度很快。但是增删稍慢。线程不同步的。

  116. List集合特有的迭代器,ListIterator是Iterator的子接口。

  117. 在迭代时,不可以通过集合对象的方法操作集合中的元素,会发生并发修改异常。ConcurrentModificationException
  118. 所以在迭代时,只能用迭代器的方法操作元素,但是Iterator的方法是有限的
  119. 只能对元素进行判断,取出,删除等操作。
  120. 如果想要其他的操作如添加,修改等。就需要使用其子接口,ListIterator。

  121. 该接口只能通过List集合的ListIterator方法获取。

  122. List:
  123.         特有方法,凡是可以操作角标的方法都是该体系特有的方法。


  124.                 add(index,element);
  125.                 addAll(index,Collection);

  126.                 remove(index);

  127.                 set(index,element);

  128.                 get(index);
  129.                 subList(from,to);
  130.                 ListIterator();
  131. */
复制代码
回复 使用道具 举报
顶贴,领题
回复 使用道具 举报
ender 中级黑马 2014-12-13 23:58:37
109#
好好好啊
回复 使用道具 举报
会贴领题:sleepy:
回复 使用道具 举报
回帖领题。。。。
回复 使用道具 举报
回帖领题
回复 使用道具 举报
我来领题啦
回复 使用道具 举报
来看题目啦啦啦
回复 使用道具 举报
接着领题。
回复 使用道具 举报
谢谢阳哥指导

No6.rar

2.78 KB, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报

总结的好到位,很全:
  1. String:
  2.         概述:
  3.                 String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
  4.                 字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。
  5.                 String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写。
  6.                 大小写映射基于 Character 类指定的 Unicode 标准版。
  7.                 Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其
  8.                 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。


  9.        

  10. StringBuilder:
  11.         概述
  12.                 一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,
  13.                 用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
  14.                 在 StringBuilder 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,
  15.                 然后将该字符串的字符添加或插入到字符串生成器中。append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。
  16.                 通常,如果 sb 引用 StringBuilder 的实例,则 sb.append(x) 和 sb.insert(sb.length(), x) 具有相同的效果。 每个字符串生成器都有一定的容量。
  17.                 只要字符串生成器所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区。如果内部缓冲区溢出,则此容量自动增大。
  18.                 将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。

  19. String和StringBuilder比较
  20.                 String是不可改变对象,一旦创建了一个String对象并为它赋值,它就不可能再改变,也就是你不可能改变一个字符串的值。String是引用类型,
  21.                 这就是如果我们创建很多个相同值的字符串对象,它在内存中的指向地址应该是一样的。也就是说,当我们创建了字符串对象a,它的值是“1234”,
  22.                 当我们再创建一个值为“123”的字符串对象b时它不会再去分配一块内存空间,而是直接指向了a在内存中的地址。
  23.                 String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间。
  24.                 样就引出StringBuilder对象,StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能。这一点我们平时使用中也许都知道,
  25.                 连接操作频繁的时候,使用StringBuilder对象看出用String来做字符串的连接时效率非常低,但并不是所任何情况下都要用StringBuilder,
  26.                 当我们连接很少的字符串时可以用String,但当做大量的或频繁的字符串连接操作时,就一定要用StringBuilder。String对象是不可改变的。
  27.                 每次使用System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
  28.                 在需要对字符串执行重复修改的情况下与创建新的String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,
  29.                 则可以使用   System.Text.StringBuilder   类。例如,当在一个循环中将许多字符串连接在一起时,使用StringBuilder类可以提升性能


  30. ArrayList:       
  31.         概述:
  32.                 ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,
  33.                 此类还提供一些方法来操作内部用来存储列表的数组的大小。每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。
  34.                 它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。自动增长会带来数据向新数组的重新拷贝,
  35.                 因此,如果可预知数据量的多少,可在构造ArrayList时指定其容量。在添加大量元素前,应用程序也可以使用ensureCapacity操作来增加ArrayList实例的容量,
  36.                  这可以减少递增式再分配的数量。
  37.                 注意,此实现不是同步的。如果多个线程同时访问一个ArrayList实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步。

  38.              ArrayList的实现:
  39.                 对于ArrayList而言,它实现List接口、底层使用数组保存所有元素。其操作基本上是对数组的操作。下面我们来分析ArrayList的源代码:
  40.             底层使用数组实现:
  41.                  ArrayList提供了三种方式的构造器,可以构造一个默认初始容量为10的空列表、构造一个指定初始容量的空列表以及构造一个包含指定collection的元素的列表,
  42.                  这些元素按照该collection的迭代器返回它们的顺序排列的。
  43.                  也就是说ArrayList底层是数组,然后空间容量是指定可变的,

  44. HashSet:
  45.                 对于HashMap及其子类而言,它们采用Hash算法来决定集合中元素的存储位置。当系统开始初始化HashMap时,系统会创建一个长度为capacity的Entry数组,
  46.                 这个数组里可以存储元素的位置被称为“桶(bucket)”,每个bucket都有其指定索引,系统可以根据其索引快速访问该bucket里存储的元素。
  47.                 当每个bucket只存储一个元素时,HashMap性能最好。当解决冲突而产生的链越长,性能越差。装填因子load factor,默认值是0.75,
  48.                 这个是空间和时间的折衷,增大装填因子,可以减小Hash表所占用的空间,但会增加查找时间,减小装填因子,会提高数据查询性能,
  49.                 但会增加Hash表所占用的内存空间。在new 一个hashMap的时候,可以适当的传入要建立的大小,传入的应该是2的n次幂。
  50.          HashSet的底层实现
  51.                 HashSet底层是通过HashMap实现的,看如下的构造函数,构造HashSet的时候底层就构造了一个HashMap

  52.          HashSet的实现其实非常简单,它只是封装了一个 HashMap 对象来存储所有的集合元素,所有放入 HashSet 中的集合元素实际上由 HashMap 的 key 来保存,
  53.                 而 HashMap 的 value 则存储了一个 PRESENT,它是一个静态的 Object 对象。
  54.                 HashSet 的绝大部分方法都是通过调用 HashMap 的方法来实现的,因此 HashSet 和 HashMap 两个集合在实现本质上是相同的。
复制代码
回复 使用道具 举报
领题来了
回复 使用道具 举报
回帖领题
回复 使用道具 举报
回帖领题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马