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>();
方法
返回值类型 | 方法和描述 |
---|---|
boolean |
add(E e)
将指定的元素添加到集合中
|
void |
add(int index, E element)
在列表中指定的位置上插入指定的元素。
|
boolean |
addAll(Collection<? extends E> c)
追加指定集合的所有元素到这个列表的末尾,按他们的指定集合的迭代器返回。
|
boolean |
addAll(int index, Collection<? extends E> c)
将指定集合中的所有元素插入到该列表中,从指定位置开始。
|
void |
clear()
从这个集合中移除所有的元素。
|
Object |
clone()
返回该 ArrayList实例浅拷贝。
|
boolean |
contains(Object o)
返回 true如果这个列表包含指定元素。
|
void |
ensureCapacity(int minCapacity)
增加集合的容量,虽说arraylist本省就是可变的,但当你可以预先确定一定容量时,可以增加效率
|
E |
get(int index)
返回此列表中指定元素的位置
|
int |
indexOf(Object o)
返回此列表中指定元素的第一个出现的索引,或-如果此列表不包含元素,或- 1。
|
boolean |
isEmpty()
返回 true如果此列表不包含元素。
|
Iterator<E> |
iterator()
在这个列表中的元素上返回一个正确的顺序。
|
int |
lastIndexOf(Object o)
返回此列表中指定元素的最后一个发生的索引,或-如果此列表不包含元素,或- 1。
|
ListIterator<E> |
listIterator()
返回列表元素的列表迭代器(在适当的顺序)。
|
ListIterator<E> |
listIterator(int index)
在列表中的元素上返回列表迭代器(在适当的顺序),从列表中的指定位置开始。
|
E |
remove(int index)
移除此列表中指定位置的元素。
|
boolean |
remove(Object o)
从该列表中移除指定元素的第一个发生,如果它是存在的。
|
boolean |
removeAll(Collection<?> c)
从这个列表中移除包含在指定集合中的所有元素。
|
boolean |
removeIf(Predicate<? super E> filter)
删除满足给定谓词的这个集合的所有元素。
|
protected void |
removeRange(int fromIndex, int toIndex)
从列表中删除所有的元素的索引
fromIndex 之间,包容性,和 toIndex ,独家。 |
void |
replaceAll(UnaryOperator<E> operator)
用将运算符应用到该元素的结果替换此列表中的每个元素。
|
boolean |
retainAll(Collection<?> c)
仅保留包含在指定集合中的列表中的元素。
|
E |
set(int index, E element)
用指定元素替换此列表中指定位置的元素。
|
int |
size()
返回此列表中元素的数目。
|
void |
sort(Comparator<? super E> c)
分类列表使用提供的
Comparator 比较元素。 |
Spliterator<E> |
spliterator()
创建一个后期绑定和快速失败
Spliterator 超过此列表中的元素。 |
List<E> |
subList(int fromIndex, int toIndex)
返回一个视图之间的指定
fromIndex ,包容,和 toIndex 这份名单的部分,独家。 |
Object[] |
toArray()
返回一个数组,包含在这个列表中的所有元素在适当的顺序(从第一个到最后一个元素)。
|
<T> T[] |
toArray(T[] a)
返回一个数组,包含在这个列表中的所有元素在适当的顺序(从第一到最后一个元素);返回数组的运行时类型是指定的数组的运行时类型。
|
void |
trimToSize()
装饰这 ArrayList实例是列表的当前容量。
|
下面是一些实例:
- 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的位置,依次类推
Java 基础 引用数据类型 ArrayList集合的更多相关文章
- Java基础-引用数据类型之集合(Collection)
Java基础-引用数据类型之集合(Collection) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便 ...
- java基础-引用数据类型之一维数组(Array)
java基础-引用数据类型之一维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组的定义 1>.为什么需要数组 保存一个数据可以定义一个变量,如果要保 ...
- java基础-引用数据类型之二维数组(Array)
java基础-引用数据类型之二维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我们学习过了Java的一维数组,所谓的二维数组就是元素是一堆一维数组的数组,换 ...
- Java 基础 引用数据类型 和 流程控制
引用数据类型 与定义基本数据类型变量不同,引用数据类型的变量定义及复制有一个相对固定的步骤和格式: 数据类型 变量名 = new 数据类型(); 如:String st = new String(); ...
- Java基础知识(数据类型和集合)
一.数据类型 包装类型 包装类型是对基本数据类型不足之处的补充. 基本数据类型的传递方式是值传递,而包装类型是引用传递,同时提供了很多数据类型间转换的方法. Java1.5 以后可以自动装箱和拆箱 二 ...
- 【Java基础】【15Colletion集合】
15.01_集合框架(对象数组的概述和使用) A:案例演示 需求:我有5个学生,请把这个5个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息. Student[] arr = new Stu ...
- java基础(数据类型,运算符)
java基础之数据类型(变量) java中存在的数据有常量和变量 常量:在程序执行的过程中其值不可以发生改变 常量的分类 字面值常量 字面值常量的分类 常量 描述 字符串常量 用双引号括起来的内容 整 ...
- java的引用数据类型,你知道吗???
有些人很清楚java的八种基本数据类型,但说到java的引用数据类型就不清楚了. Java的数据类型分为两大类,即基本数据类型和引用数据类型,在基本数据类型中有8种 基本数据类型(逻辑型-boolea ...
- JAVA基础第五章-集合框架Map篇
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
随机推荐
- Asp.Net Identity cookie共享
n the Startup.Auth.cs file, add the CookieDomain parameter with your domain: var cookieAuthenticatio ...
- [转]Java中一周前一个月前时间计算方法
Java中一周前一个月前时间计算方法 在java语言中,用如下方法获取系统时间: Date date = new Date(); String year=new SimpleDateFormat(&q ...
- OOM
在mnist上测试卷积网络时,显存不够导致下面的报错: ResourceExhaustedError (see above for traceback): OOM when allocating te ...
- 游标SQL Cursor 基本用法
http://www.cnblogs.com/Gavinzhao/archive/2010/07/14/1777644.html 1 table1结构如下 2 id int 3 name va ...
- apache中端口与目录的关系
apache中,如果设置了监听了端口而没有配置对应的虚拟目录,则访问时会指向<Directory >节所指向的目录.
- LeetCode 4 - 两个排序数组的中位数 - [分治]
题目链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/description/ 给定两个大小为 m 和 n 的有序数组 n ...
- [No0000158]思维模型1-20
[No0000158]思维模型1-20.7z 思维模型No1|第一性原理 第一原理(又叫第一性原理)是个今年很火的概念,最早由亚里士多德提出,它相当于数学中的公理,即在每一个系统的探索中,存在第一原理 ...
- 一个按成绩排序SQL的写法问题
测试数据: SQL> select * from sscore; NAME SCORE ---------- ----- aa 99 bb ...
- express+gulp+gulp-nodemon+browser-sync自动刷新
express自动生成项目.不在赘述 1.在项目根目录下新建终端,依次运行如下命令 npm install gulp --save-dev npm install gulp-nodemon --sav ...
- winform excel导入--NPOI方式
项目中要用到excel导入数据,用NPOI方式做了一个demo,记录如下: Form1代码: public Form1() { InitializeComponent(); } private voi ...