java基础学习 day37 (集合)

1. 集合与数组的区别

  • 长度:数组长度固定,一旦创建完成,就不能改变。集合长度可变,根据添加和删除元素,自动扩容或自动收缩,(添加几个元素就扩容多少,删除几个元素就收缩多少)
  • 存储类型:数组可以存基本数据类型和引用数据类型。集合可以存引用数据类型,但集合不能直接存储基本数据类型,只有把基本数据类型变成包装类后才可以存到集合中,包装类是引用数据类型
  • 基本数据类型对应的包装类:
基本数据类型 包装类
byte Byte
short Short
char Character
int Integer
long Long
float Float
double Double
boolean Boolean
  • 在JDK5以后 int Integer,char Character(基础数据类型和包装类)之间可以互相转化,即实参可以直接写基础数据类型。

2. 创建集合的对象

ArrayList <E > list = new ArrayList<E >();
//JDK7以前的写法
ArrayList <E > list = new ArrayList< >();
//从JDK7开始的写法

  • 其中:<E >为泛型,用来限定集合中存储数据的类型,在JDK7以后,后面的E可以省略,只写前面的E即可。
  • 在sout集合名时,(若泛型是java定义的引用数据类型或者java已经写好的包装类,则打印的不是集合的地址值,而是集合中的元素存放的地址指向的数据内容,若泛型是自己定义的引用数据类型,则打印的也不是集合的地址值,而是对应元素所存放的地址值,)同时会用[ ]把所有的数据进行包裹,元素与元素之间用“,”隔开,这是java已经写好的模式。

3. ArrayList成员方法
在这里插入图片描述

  • add(添加元素)的方法,若数据类型匹配,则不管内容,返回值都是true,都会添加成功。
  • 且add(添加元素)的方法,若元素为引用数据类型,则添加的是元素的地址值,有一个注意点,如图:

若在循环外创建Student对象,只会申请一次内存空间用来存Student的值,则循环内每次添加的元素的地址都相同,修改这个Student对象的内容时,会将几个相同地址值的元素的内容均进行修改
在这里插入图片描述
若在循环内创建Student对象,则每次创建都会申请一片新空间用来存储Student的值,即每次添加的元素的地址值都不同,那么修改这个Student对象时,每次都是独立修改,不会对之前的造成影响。且这个Student对象名为局部变量,每次循环结束都会回收这个Student对象名,但因为集合中有元素的地址指向这块内存空间,所以,这块内存空间不会回收。
在这里插入图片描述

  • 其中remove(删除元素)的方法,会删除从左至右的第一个匹配的元素,删除成功后,返回true,集合会更新,若删除失败,返回false,集合不变。
  • 技巧:如果我们要返回多个数据,可以把这些数据先放到一个容器当中,再把容器返回,容器可以是数组,集合等。

4. 开发技巧

  • 校验时,先判断格式是否正确,再判断数据是否唯一。因为在以后所有的数据,都是存在数据库中,如果我们要校验,就需要使用网络资源,会占用资源,一般把占用资源的操作放在最后。
  • 调用方法时,若要连续使用方法的返回值,最好在第一次调用时用一个变量来接收,就不用多次调用方法了,节约资源,提高效率
  • 封装方法的应用,我们可以把一些零散的数据,封装成一个对象,以后传递参数时,只要传递一个整体就可以了,不需要管这些零散的数据。

猜你喜欢

转载自blog.csdn.net/u011453680/article/details/128761139