引用数据类型(类)

分类

提到引用数据类型(类),其实我们对它并不陌生,如使用过的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集合的更多相关文章

  1. Java基础-引用数据类型之集合(Collection)

    Java基础-引用数据类型之集合(Collection) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便 ...

  2. java基础-引用数据类型之一维数组(Array)

    java基础-引用数据类型之一维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组的定义 1>.为什么需要数组 保存一个数据可以定义一个变量,如果要保 ...

  3. java基础-引用数据类型之二维数组(Array)

    java基础-引用数据类型之二维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我们学习过了Java的一维数组,所谓的二维数组就是元素是一堆一维数组的数组,换 ...

  4. Java 基础 引用数据类型 和 流程控制

    引用数据类型 与定义基本数据类型变量不同,引用数据类型的变量定义及复制有一个相对固定的步骤和格式: 数据类型 变量名 = new 数据类型(); 如:String st = new String(); ...

  5. Java基础知识(数据类型和集合)

    一.数据类型 包装类型 包装类型是对基本数据类型不足之处的补充. 基本数据类型的传递方式是值传递,而包装类型是引用传递,同时提供了很多数据类型间转换的方法. Java1.5 以后可以自动装箱和拆箱 二 ...

  6. 【Java基础】【15Colletion集合】

    15.01_集合框架(对象数组的概述和使用) A:案例演示 需求:我有5个学生,请把这个5个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息. Student[] arr = new Stu ...

  7. java基础(数据类型,运算符)

    java基础之数据类型(变量) java中存在的数据有常量和变量 常量:在程序执行的过程中其值不可以发生改变 常量的分类 字面值常量 字面值常量的分类 常量 描述 字符串常量 用双引号括起来的内容 整 ...

  8. java的引用数据类型,你知道吗???

    有些人很清楚java的八种基本数据类型,但说到java的引用数据类型就不清楚了. Java的数据类型分为两大类,即基本数据类型和引用数据类型,在基本数据类型中有8种 基本数据类型(逻辑型-boolea ...

  9. JAVA基础第五章-集合框架Map篇

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

随机推荐

  1. spring框架的ioc

       spring框架,主要思想可以用spring容器来理解 aop是一种对oop进行补充的软件设计思想,将和核心功能不相关代码抽象出来,由其他类完成.比如Singer类,我们可以定义一个Singer ...

  2. Qt 4.8.6 PCL 1.8.0 VS 2010 联合编译常见错误

    在Qt和PCL联合编译的过程中,会出现各种各样的错误,解决这些错误的过程真是痛苦万分,所以总结一些常见错误方便自己也方便他人.比如我们要编译PCL1.8.0中的apps中的point_cloud_ed ...

  3. rx.js 的冷和热观察

    http://cn.rx.js.org/manual/overview.html#h213 https://rxjs-cn.github.io/rxjs5-ultimate-cn/content/ho ...

  4. Ubuntu下eclipse中运行Hadoop时所需要的JRE与JDK的搭配

    第一组: Eclise 版本:Indigo,Service Release 1 Build id:20110916-0149 Window-->Preferences -->Compile ...

  5. [No000016E]Spring 中获取 request 的几种方法,及其线程安全性分析

    前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...

  6. 子分区 复合分区 Subpartitioning

    https://dev.mysql.com/doc/refman/8.0/en/partitioning-subpartitions.html

  7. 拳打Adam,脚踢SGD:北大提出全新优化算法AdaBound

    https://mp.weixin.qq.com/s/el1E-61YjLkhFd6AgFUc7w

  8. 2016年蓝桥杯省赛A组c++第5题(计算机组成原理)

    /* 下面的代码把一个整数的二进制表示的最右边的连续的1全部变成0 如果最后一位是0,则原数字保持不变. 如果采用代码中的测试数据,应该输出: 0000000000000000000000000110 ...

  9. wpf(第一章 基础知识)

    wpf第一章基础知识:通过vs2015创建wpf程序会在引用里面多出3个核心程序集PresentationCore.PresentationFramework.WindowsBase.并且会在解决方案 ...

  10. python basic

    #遍历一个序列,很多传统语言过来的,习惯用下标遍历,Python中序列是可迭代的,直接for即可! colors=['red','green','blue','yellow'] for color i ...