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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区 黑马粉丝团   /  2018-10-24 19:08  /  1022 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天我们进一步学习了集合和泛型,请根据自己的理解回答下面问题

1.集合和数组的区别?

2.什么是迭代器,什么是增强for,增强for和普通for循环的区别?

3.什么是泛型?使用泛型有什么好处?

3 个回复

倒序浏览

今天我们进一步学习了集合和泛型,请根据自己的理解回答下面问题

1.集合和数组的区别?
        数组的长度确定就不能改变,只能存储统一的数据类型
        集合的长度可以发生改变,储存的是对象,对象类型可以不一致

2.什么是迭代器,什么是增强for,增强for和普通for循环的区别?
        迭代器是遍历集合,增强是专门用来遍历数组与集合的.
        区别:
        1.定义格式
                1)普通for:
                for(初始化表达式;布尔表达式;步进语句){
                        循环体;
                }
                2)增强for
                for(数据类型 变量名 : 集合名/数组名){
                       
                }
                注意: 增强for不能进行增删操作
        2.普通for循环需要确定次数,增强for不确定循环次数
        3.
               

3.什么是泛型?使用泛型有什么好处?
        泛型是一个不确定的数据类型
        好处:
        1.把运行时出现的异常改变到编译时期
        2.避免了强转的麻烦,(默认泛型是Object类,如需使用子类特有属性,需要向下转型)

评分

参与人数 1技术分 +1 收起 理由
厦门校区 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1 集合和数组的区别
(1)集合只能存储对象,数组可以存储基本类型和对象;
(2)集合的长度是可变的,空间不够自动进行扩容,数组定义好后长度是不变的;
(3)数组的效率较高,在存储的对象比较多或则需要使用集合的方法时使用集合,否则优先使用数组。

2-1 迭代器的概念
(1)迭代器是用来遍历没有索引的集合的对象,例如set接口的实现类TreeSet、HashSet这2个集合类必须使用迭代器进行遍历。
2-2增强for循环
(1)是for循环的一种高级的for循环,用来遍历数组和集合,底层使用迭代器实现。
2-3增强for和普通for的区别
(1)增强for的只进行遍历,遍历的时候不能进行增删操作,否则报异常;
(2)增强for没有没法获取当前循环的索引值(当前是第几次循环),所以需要用到当前循环次数参数的只能使用for;
(3)增强for的格式更加简洁。

3-1 泛型概念
(1)泛型是一种引用类型约束。
3-2泛型的好处
(1)泛型可以自动进行数据类型转换;
(2)可以将运行时的类型转换异常提升到编译期。

评分

参与人数 1技术分 +1 收起 理由
厦门校区 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.集合和数组的区别?
答: 数组是静态的,数组的长度是固定的, 一旦创建了就无法改变容量了。数组一次只能获取或设置一个元素的值,不便于在数组中间位置进行增删操作。
集合是可以动态扩展容量,可以根据需要动态改变大小,根据需要自动扩充、修改、删除或插入数据。集合提供更多的成员方法,能满足更多的需求。
数组存储的是同一类型的元素,可以存储基本数据类型和引用类型数据。
集合存储的是对象,存储的数据类型可以不一致。数组必须声明了它容纳的元素的类型,而集合可以不声明。

2.什么是迭代器,什么是增强for,增强for和普通for循环的区别?
答:迭代即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续再判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。
增强for循环(也称for each循环),专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。
区别:增强for已知数组和集合的范围,无需进行判断,就会自行遍历集合或数组中的每一个元素。普通for需要自己设定初始值和步进数以及循环次数。

3.什么是泛型?使用泛型有什么好处?
答:可以在类或方法中预支地使用未知的类型。
泛型接口:实现一个接口的时候,如果不明确目前要操作的数据类型,可以等到创建接口实现类对象的时候才去指定泛型的具体数据类型。
       接口自定义泛型的格式如下:
  修饰符 class 类名<声明自定义泛型> implements 接口名<声明自定义泛型>{
  }
泛型类:是在实例化类的对象时才能确定的类型,这时需要在创建该类的对象时指明泛型的具体类型。如果不指定泛型的具体类型,则默认是Object类型。泛型类中若有static 的方法,则该方法中不能用类的泛型类型。如果需要泛型就需要单独进行泛型声明,声明泛型一定要写在static后,返回值类型之前。
泛型方法:如果让一个方法可以接收任意的类型,而且调用者传入什么类型的参数,则该方法的参数类型就是那一个类型。泛型方法是在调用方法的时候指明泛型的具体类型。定义泛型方法时,必须在返回值前边加一个<T>。
我们既可以在类上进行泛型声明,也可以同时在该类的方法中声明泛型。
好处:将运行时期的ClassCastException,转移到了编译时期变成了编译失败。
避免了类型强转的麻烦。
每当有任何类想要实现这个接口时,它都可以选择提供准确的类型替换泛型类型。
通过泛型可以定义类型安全的数据结构(类型安全),而无须使用实际的数据类型(可扩展)。这能够显著提高性能并得到更高质量的代码(高性能),因为可以重用数据处理算法,而无须复制类型特定的代码(可重用)。

评分

参与人数 1技术分 +1 收起 理由
厦门校区 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马