基本数据类型封装类、Collection、Iterator

基本数据类型对象包装类

 

想要对基本类型数据进行更多的操作,最方便的方式就是将其封装成对象

因为在对象描述中就可以定义更多的属性和行为对该基本类型数据进行操作

byte           Byte

short          Short

int            Integer

long           Long

float           Float

double         Double

char           Charater

boolean        Boolean

基本类型变成对象的好处:

可以将基本数据和字符串之间进行相互转换

Integer.MAX_VALUE 表示int类型的最大值

基本类型数据——》字符串

1,  基本数据类型包装类中的方法static String toString(基本类型);

2,  String类中的方法staticString valueOf(基本类型)

3,  基本类型数据+“”

重点掌握

字符串——》基本类型数据

       基本类型 参数,字符串

       基本类型 parse基本类型类名(是基本类型格式的字符串)

       在八个基本类型对象包装类中只有一个对象没有parse方法 Character

Integer 涉及到进制转换问题

十进制——》其他进制转换

         二进制:toBinaryString(int);

         十六进制:toHexString(int);

         八进制:toOctalString(int);

  toString   Integer.toString(a,b);//a表示需要转换的十进制数,b表示想要转换的进制

  Integer。toString(6,2);          结果为110

其他进制——》十进制

  int  parseInt(intString,radix);  intString表示要转的其他进制,radix表示该进制数

  Integer。parseInt(“110”,2);        结果为6

基本数据类型值和基本类型数据对象之间的转换

 

基本数据类型值——》基本类型数据对象

       使用构造函数。既可以接收基本数值,也可以接收基本数值的字符串形式。

       可以使用基本类型对象中的方法。Static Integer valueOf(int);

基本类型对象——》基本数据类型

       int intValue();

如果两个数被封装成了对象该如何比较

对象想要进行比较,必须通过方法来完成,这个方法就是compareTo。而很多对象都可以比较。所以这个方法定义在Compareble接口中。想要对象具备比较功能,只要实现Compareble接口

基本数据类型对象包装类JDK1.5后的新特性

新特性的出现无非就是简化书写

让这些对象可以想操作基本数值一样进行运算

Integer i=5;//i=new Integer(5);自动装箱。自动完成了对象创建的动作。Integer.valueOf(5);

i=i/*.intValue()*/+5;//=右边的i会先转成基本数据值(自动拆箱),然后再和5进行加法运算

                //=右边运算完的结果,再次被自动装箱变成Integer对象赋值给i

一旦简化就有弊端:多具备一个值null。  使用自动装箱时,建议进行null的健壮性判断

 

Boolean b=true;和boolean=true;有什么不同?

前者是自动装箱后的对象引用

后者是基本数据

 

Integer m=127

Integer n=127

m==n 结果为true

Integer m=128

Integer n=128

m==n 结果为false

在jdk1.5后的新特性自动装箱中

如果数值在byte类型范围内,如果该对象数值重复出现,多个引用其实指向的是同一个

Integer对象。但如果超出byte范围,都会生成新的Integer对象

Object x=5;Object类是不可以放基本数据类型的,此时是自动装箱后的结果。5为对象

集合类

集合:

1, 用于存储对象的容器。

2, 该容器的长度是可变的

集合和数组的区别?

1,

集合的长度是可变的

数组的长度是固定的

2,

集合中只能存储对象

数组中据可依存储对象,又可以存储基本类型的数值

3,  

集合中存储放对象可以是任意的

数组中只能存储同一种类型的对象

集合框架的由来:

容器很多,因为每个容器中的数据结构是不同的

数据结构:就是数据在容器中的存储方式

如散装鸡蛋和品牌鸡蛋的存储方式

容器虽然因为结构有不同,但是都具备着共性,可以不断的向上抽取

就形成集合框架,该框架的顶层之一就是Collection接口

该接口中定义了集合框架中最共性的功能

最终使用的时候,其实使用的该框架最子类的对象

Collection中的方法:

1, 添加方法

     boolean add(Object e):一次添加一个元素

     boolean addAll(Collection) :将一个参数容器中的元素添加到当前容器中。

2, 删除方法

     boolean remove(object):删除一个指定的对象

boolean removeAll(object):删除指定Collection中和本Collection中相同的元素

     void clear():直接将集合中的元素清空。

3, 判断方法

      boolean contains(object):是否包含指定元素

      boolean contains(Collection):是否包含指定容器中的元素

      boolean isEmpty();是否有元素。

4, 获取元素个数

      int size():获取元素有几个

5, 取交集

       booleanretainAll(collection):保留和指定Collection集合中相同的元素。不相同的元素会被删除

6, 将集合转成数组

      Object[] toArray();

7, 取出元素的方法

      Iterator iterator();

迭代器:取出集合中元素的方式的一个对象。对象本身就内置在容器中。

 

通过iterator()方法来完成。该方法返回一个Iterator类型对象。

迭代器接口出项:将每一个容器中的取出方式进行了封装。并对外暴露。

这样无论是什么容器或者数据结构,只要内部取出方式实现了Iterator接口,都可以通过该接口取出这些容器中的元素。

 

它的出现,将容器的取出方式和容器的数据结构相分离,降低了耦合性。

而取出方式因为直接在访问容器中的元素,并依赖具体的数据结构,所以被定义在了容器中。通过内部类来实现Iterator接口。

大型游戏机中抓布娃娃的游戏机中的夹子。就是那个迭代器

只要是Collection集合中的容器,迭代器是通用取出方式。

迭代器的使用

Iterator it=coll.iterator();

While(it.hasNext())

{

   System.out.println(it.next());

}

将while()改成for循环结构。开发的时候建议写for

for(Iterator  it=coll.iterator();it.hasNext;)

{

 System.out.println(it.next());

}

结合的一些小细节

创建一个集合容器。其实也是一个对象

这个对象中存储着特定结构可以对对象进行存储。

1, 存储时,add可以接收任意类型的对象因为参数类型是Object

所以对象元素存入时都被提升为了Object

2, 其实在集合中真正存储都是对象的引用。

coll.add(5);

等同于coll.add(Integer.valueOf());自动装箱 拆箱intValue();

用迭代器取出时,其实取出的也是引用

一般开发时,最常见的就是往集合存储自定义对象。

1, 对自定义对象进行描述

存储时,都被提升为了Object。

取出时如果要使用自定义对象的特有方法,一定要进行向下转型

注意事项:在迭代时,循环中只要有一个next()即可

发布了30 篇原创文章 · 获赞 1 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章