java常用类和容器

常用类

1.常用类有:

1.字符串相关类(String.StringBuffer);

2.基本数据类型包装类;

3:Math类;

4:File类;

5:枚举类。

(1)1.public char charAt(int index):

             返回字符串中第index个字符

2.public int length():

            返回字符串的长度。

          3.public int indexOf(String str):

              返回字符串中出现str的第一个字符

以后要用到某个功能的String类方法时查看api文档

6.静态重载方法:

(1).public static String valueOf(..)可以将基本类型数据转换为字符窜;例如:public static String valueOf(double d);

(2):方法public String[] split(String regex)可以将一个字符串按照指定的分隔符分隔;其中多态是面向对象过程中最核心的部分。

7.StringBuffer类:

(1).java.lang.StringBuffer 代表可变的字符序列。

(2).StringBuffer和String类似,但StringBuffer可以对其字符串进行改变。String在分配好字符以后在内存中是不可以变

(3).StringBuffer类的常见构造方法:…StringBuffer()[创建一个不包含字符序列的“空”的STringBuffer对象]…StringBuffer(String str())[创建一个StringBuffer对象,包含与String对象str相同的字符序列]。Buffer是缓冲区,就是在一个区域有什么东西先往那块区域放然后再往其他的地方装运。

(4).String代表的是不可变的字符序列,一旦分配好了内存是不能在变的。

(5).基本数据类型包装类:包装类(如:Integer,Double等)这些类分装了一个相应的基本数据数值,并为其提供一系列操作。Valueof是将字符串转换成其他类型的数据就是转换成我们所了解的基础类型数据.

(6)经常打印出一些的东西出来以便于我们调式程序。

8.Math类:

(1).java.lang.Math提供了一系类静态方法用于科学计算,其方法的参数和返回值类型一般为double类型。

(2).java.io.File类代表系统文件名(路径和文件名)。File类的常见构造方法:

  Public File(String pathname)

  以pathname为路径创建File对象,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。在系统中“/”是一个路径分隔符号;File类中的方法可以找API文档查询

(3).在编写程序时可以多用到参数,因为可以使我们的方法更简便.

9.Java.lang.Enum枚举类型

(1).枚举类型:

(2)只能够取特定值中的一个。

(3)使用enum关键字。

(4)是java.lang.Enum类型。在编程的时候,不可避免的错误会发生的时候,能最早发现就最好最早发现比较好,当自己发现某个方法不认识或者不太清楚时,那么要自觉的查询API文档。它就像一个我们用的字典

容器

1.容器:

java API所提供的一系列类的实例,用于在程序中存放对象。也就是装各种各样类,对象的一种东西。数组也是一种容器。

2.j2sdk所提供的容器API位于java.Util包内。

容器API的查询也是比较重要的。Collection接口——定义了存取了一组对象的方法,其子接口Set和List分别定义了存储方式。

3.在容器中,Set中的数据对象没有顺序且不可以重复。

List中数据对象有顺序且可以重复,而Map接口定义了存储“键(Key)-值(value)映射对”的方法。

4.interface中的Set容器和List容器是一个一个存储,

但是Set是无序的并且不可以重复,而那个List是有序且可重复。嘿嘿,其中那个Map是一对一对存储的。那个所谓的重复是两个对象之间内容相同时也就是equals相同时才叫重复。

5.容器类对象再调用remove,contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals方法和hashCode方法,

其中主要用equals方法,当某个对象用在Map接口里面作为键的时候也就是相当于作为字典里面那个索引的时候会用hashCode方法,在这种情况下,hashCode的效率会比较高。对于自定义的类型,需要重写equals和hashCode方法以实现自定义的对象相等规则。注意:相等的对象应该具有相等的hash codes.

6.hashCode非常适合当索引。

其中通过hashCode方法可以找到它在内存中的地址,但是不是绝对的物理地址,能非常快的找到它所在的位置,所以它非常适合当做索引,因此,当用Map接口一对一对往里面存的时候,一个叫索引一个叫值,作为索引的时候就是hashCode方法。

7.记得这么个原则:

当你要重写equals方法时也要重写hashCode方法,两个对象要相互比较equals时,两个对象必须具备相同的hashCode(可以从查字典的方式理解出发)当这个对象成为索引或者键的时候有用。在定义一个容器的一个类时,最好用父类引用指向子类,这样提供了程序的最佳灵活性

8.Iterator接口

(1).iterator接口是统一实现所有遍历的元素的一个方法。

(2).所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。

(3).Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。在调用一个iterator方法时在栈空间里会分配一个零时的空间,将返回的值扔向那个空间里面。在这个方法里有多态的实现

(4).Iterator对象的remove方法是在迭代过程中删除元素的唯一的安全方法。其中在Iterator循环的内部,他执行时是对元素锁定的,谁都不能访问,除了他自己。其中JDK中增强了的for循环:

Int [] arr ={1,2,3,4};

for(int I : arr)意思就是将数组中的元素arr一个一个给I;但是这种方法不能方便的访问数组的下标值,与iterator相比,不能方便的删除集合中的内容,在内部也是调用Iterator;

9.Set接口

(1)Set接口是Collection的子接口,Set接口没有提供额外的方法,但实现Set接口的容器类中的元素是没有顺序的,而且不可以重复。

(2)Set接口可以与数学中“集合”的概念相对应。

(3)J2SDK API中所提供的Set容器类有:HashSet,TreeSet等。retainAll()取交集的函数

10.List接口

(1).List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,而且可以重复

(2).List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。

(3).J2SDK所提供的List容器类有ArrayList,LinkedList等。类java.util.Collections 提供了一些静态方法实现了基于List容器的一些常用算法。其中ArrayList的效率比LinkList效率要高,因为LinkList只需要将指针换一下就可以了,而ArrayList是要将数组元素从新分配。

(4).所有可以“排序”的类都实现了Java.lang.Comparable接口,Comparable接口中只有一个方法。实现Comparable接口的类通过实现ComparaTo方法从而确定该类对象的排序方式

(5).如何选择数据结构,衡量标准:读的效率和改的效率;Array读快改慢,Linked改快读慢,Hash两者之间。

11.Map接口

(1).实现Map接口的类用来存储键-值对

(2).Map接口的实现类有HashMap和TreeMap等

(3).Map类中存储的键-值对通过键来标识,所以键值不能重复。

12.hashcode的作用:

(1)用最简单的方法来说,hashcode就是一个签名。当两个对象的hashcode一样时,两个对象就有可能一样。如果不一样的话两个对象就肯定不一样。一般用hashcode来进行比较两个东西是不是一样的,可以很容易的排除许多不一样的东西。最常用的地方就是在一堆东西里找一个东西。先用你要找的东西的hashcode和所有东西的hashcode比较,如果不一样的话就肯定不是你要找的东西。如果一样的话就很可能是你要找的东西。然后再进行仔细的比较两个东西是不是真的一模一样。

(2)一个类中重写了equals方法时必须重写那个hashcode方法,因为这样比较好找到这个类。

(3)Auto-boxing/unboxing在合适的时机自动打包,解包;自动将基础类型转换为对象;自动将对象转换为基础类型(解包)[1.5之后就开始有]

13.泛型(JDK1.5

(1).为什么会出现泛型呢?起因是JDK1.4以前类型不明确(比如说在Map容器里面,你丢一个对象进去,1.4版本的就会把它默认成Object类对待,其特有的功能或者说特色你就会丢失):*装入的集合类型都被当做Object对待,从而失去自己的实际类型。*从集合中取出时往往需要转型,效率低,容易产生错误。

(2).解决这个问题的方法:*在定义集合的时候同时定义集合中对象的类型;*比如在BasicGeneric.java,可以在定义Collection的时候指定,也可以在循环时用Iterator指定

14.泛型的好处:

(1)*增强程序的可读性和稳定性【其中泛型使得类中的方法里的参数具体化或者说类中的对象具体化】其中泛型是在容器里面要获得某个值时不需要强制类型装换里面用处非常好,在泛型里面的Map尖括号里里面可以将容器的类型装换为多个,比如Map<Integer,String>

(2)凡事用到集合的时候最好用到泛型。这样给我们的程序有最大的可读性

15.总结

1136总结:一个容器大纲图,一个类【Collections】,三个知识点(for的增强版,Generic,Auto-box/unboxing) 六个接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值