ArrayList中存放引用数据类型
ArrayList中存放引用类型时,存放的是一个引用,因此在放入ArrayList之后再进行改动会影响到ArrayList中的值
看下面一个例子
import java.util.ArrayList; public class Student implements Cloneable{ private int age; private String name; public static void main(String[] args) { ArrayList<Student> students = new ArrayList<Student>(); Student st = new Student(); st.age = 10; st.name = "marco"; students.add(st); st.age = 20; //修改age值 System.out.println(students.get(0).age); //输出为20 } }
同样,如果ArrayList中存放的也是ArrayList类型,如ArrayList<ArrayList<Integer>>,对里面ArrayList的修改同样会影响到外层的ArrayList,如果想不受到影响可以在放入ArrayList时进行clone操作,对于ArrayList来说可以使用new ArrayList<ArrayList<Integer>>(list)来进行复制。
Java 引用数据类型 ArrayList集合
引用数据类型(类)
分类
提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类、Random类。
我们可以把类的类型为两种:
- 第一种,Java为我们提供好的类,如Scanner类,Random类等,这些已存在的类中包含了很多的方法与属性,可供我们使用。
- 第二种,我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供我们使用。
类的定义和使用
java代码映射成现实事物的过程就是定义类的过程。
我们就拿一部手机进行分析,它能用来做什么呢?它可以打电话,上网,聊微信等,这些就是手机所提供的功能,也就是方法;手机也有它的特征,如颜色、尺寸大小、品牌型号等,这些就是手机的特征,也就是属性。
目前,我们只关注类中的属性,类中的方法在面向对象部分再进行学习。
类的定义格式
创建java文件,与类名相同 public class 类名{ 数据类型 属性名称1; 数据类型 属性名称2; … }
例如:
public class Phone { /* * 属性 */ String brand;// 品牌型号 String color;// 颜色 double size; // 尺寸大小 }
类的使用方式
有如下步骤
- 导包:我们将所有的类放到同一个文件夹下,可以避免导包。
- 创建对象:数据类型 变量名 = new 数据类型();
- 调用方法:目前我们定义的自定义类不涉及方法,只是属性(自定义类中的方法部分在面向对象部分讲解)
- 访问属性:变量名.属性(这是当前的方式,后期会采取调用方法的方式替代掉直接访问的方式来完成对属性的访问。)
当有了Phone数据类型的变量后,我们就可以使用Phone类中的属性了。对属性的访问我们来演示一下,如下所示:
public class Test { public static void main(String[] args) { //定义了一个Phone类型的变量p Phone p = new Phone(); /* * 通过p,使用Phone中的属性 */ //访问p中的brand品牌属性 p.brand = "苹果6s"; //访问p中的color颜色属性 p.color = "白色"; //访问p中的size尺寸大小属性 p.size = 5.5; System.out.println("手机品牌为" + p.brand); System.out.println("手机颜色为" + p.color); System.out.println("手机尺寸大小为" + p.size); } }
自定义类的内存图演示:
上述代码中,通过类Phone创建出来的变量p,它相当于我们生活中的盒子,里面包含了它能够使用的属性。
通过 p.属性名 就可以对属性进行操作
与引用类型数组类似,引用类型的自定义类型的变量,直接变量时,结果为对象地址值,这里可以通过内存图简单解释。
ArrayList 集合
ArrayList集合是程序中最常见的一种集合,它属于引用数据类型(类)。在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。
创建
导包:import java.util.ArrayList;
创建对象:与其他普通的引用数据类型创建方式完全相同,但是要指定容器中存储的数据类型:
ArrayList<要存储元素的数据类型> 变量名 = new ArrayList<要存储元素的数据类型>();
l 集合中存储的元素,只能为<>括号中指定的数据类型元素;
l “<要存储元素的数据类型>”中的数据类型必须是引用数据类型,不能是基本数据类型;
下面给出8种基本数据类型所对应的引用数据类型表示形式:
基本数据类型 |
对应的引用数据类型表示形式 |
byte |
Byte |
short |
Short |
Int |
Integer |
long |
Long |
float |
Float |
double |
Double |
char |
Character |
boolean |
Boolean |
下面是一些创建arraylist的实例:
存储String类型的元素 ArrayList<String> list = new ArrayList<String>(); 存储int类型的数据 ArrayList<Integer> list = new ArrayList<Integer>(); 存储Phone类型的数据 ArrayList<Phone> list = new ArrayList<Phone>();
方法
下面是一些实例:
import java.util.ArrayList; public class ArrayListDemo01 { public static void main(String[] args) { // 创建ArrayList集合 ArrayList<String> list = new ArrayList<String>(); // 向集合中添加元素 list.add("stu1"); list.add("stu2"); list.add("stu3"); list.add("stu4"); // 获取集合中元素的个数 System.out.println("集合的长度:" + list.size()); // 取出并打印指定位置的元素 System.out.println("第1个元素是:" + list.get(0)); System.out.println("第2个元素是:" + list.get(1)); System.out.println("第3个元素是:" + list.get(2)); System.out.println("第4个元素是:" + list.get(3)); } }
注意:ArrayList集合相当于是一个长度可变的数组,所以访问集合中的元素也是采用索引方式访问,第一个元素存储在索引0的位置,第二个元素存储在索引1的位置,依次类推
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/x_i_y_u_e/article/details/47955695