由浅入深快速掌握Java 数组的使用

目录
  • 1.数组定义格式
    • 1.1 数组概述
    • 1.2 什么是数组
    • 1.3 数组的定义格式:
  • 2.数组初始化之动态初始化
    • 2.1 数组初始化概述
    • 2.2 数组初始化方法
  • 3.数组元素访问
    • 3.1 数组元素访问
  • 4.内存分配
    • 4.1 java中的内存分配
    • 4.2 数组内存图(单个数组)
    • 4.3 多个数组内存图
  • 5.数组初始化之静态初始化
  • 6.数组操作的两个常见小问题
  • 7.数组常见操作
    • 7.1 遍历
    • 7.2 获取数组元素个数
    • 7.3 获取最值

1.数组定义格式

1.1 数组概述

* 一次性声明大量的用于存储数据的变量

* 要存储的数据通常都是同类型数据。

1.2 什么是数组

数组(array)是一个存储多个相同类型数据的存储模型

1.3 数组的定义格式:

格式1:数据类型[ ]  变量名

范例:           int[ ]  arr

定义了一个int类型的数组,数组名是arr

格式2:数据类型  变量名[ ]

范例:           int  arr[ ]

定义了一个int类型的变量,变量名是arr数组

2.数组初始化之动态初始化

2.1 数组初始化概述

java中的数组必须先初始化,然后才能使用

所谓初始化:就是为数组中的数组元素分配内存空间,并为每个元素赋值

2.2 数组初始化方法

动态初始化

动态初始化:初始化时只指定数组长度,由系统为数组分配初始值

格式:

数组类型[ ] 变量名 = new 数据类型[数组长度];

范例:

int[ ]    arr    =   new         int[3];

示例代码:

	int [] arr = new int[3];
		/*
		 * 左边:
		 *     int:说明数组中的元素是int类型
		 *     []:说明这是一个数组
		 *     arr:这是一个数组的名称
		 * 右边:
		 *     new:为数组申请内存空间
		 *     int:说明数组中元素类型是int类型
		 *     []:说明这是一个数组
		 *     3:数组长度,其实就是数组中元素个数
		 *
		 */

3.数组元素访问

3.1 数组元素访问

* 数组变量访问方式

* 格式:

数组名

* 数组内部保存数据的访问方式

* 格式:

数组名[索引]

* 索引是数组中数据的编号方式

* 作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名

* 特征:索引是从0开始,是连续的,是逐一增加每次加1的。

//输出数组名
		System.out.println(arr);//[I@dcf3e99
		 //输出数组中的元素
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);

4.内存分配

4.1 java中的内存分配

栈内存:存储局部空间

堆内存:存储new出来的内容(实体,对象)

4.2 数组内存图(单个数组)

		//输出数组名
		System.out.println(arr);//[I@dcf3e99
		 //输出数组中的元素
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);

		//给数组中的元素赋值
		arr[0]=10;
		arr[2]=100;
		 //输出数组中的元素
		System.out.println(arr);
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);

控制台输出结果:

4.3 多个数组内存图

5.数组初始化之静态初始化

静态初始化: 初始化时指定每个元素的初始值,由系统决定数组长度

格式:

数据类型[ ] 变量名 = new 数据类型[ ] {数据1, 数据2, 数据3....};

范例:

int [ ] arr = new int [ ]{1,2,3};

简化格式:

数据类型 [ ] 变量名 = {数据1,数据2,数据3....};

范例:

int[ ] 变量名 = {1,2,3};

示例代码:

	int [] arr = {1,2,3};
	//输出数组名
		System.out.println(arr);//[I@dcf3e99
		 //输出数组中的元素
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);

6.数组操作的两个常见小问题

1. 索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题

int[ ] arr = new int [3];

system out.println(arr[3]);

2.空指针异常:访问的数组已经不在指向堆内存的数据,造成空指针异常

int[ ] arr = new int [3];

system out.println(arr[2]);

arr = null;

system out.println(arr[0]);

3.null:空值,引用数据类型默认值,表示不指向任何有效对象

7.数组常见操作

7.1 遍历

通用格式

int []arr={...};
for(int x=0;x<arr.length;x++){
	arr[x];   //对arr[x]进行操作
}

7.2 获取数组元素个数

格式:

数组名.length

范例:

arr.length

7.3 获取最值

示例代码:

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//定义数组
		int []arr={15,66,75,42,85,45,87,99,10};
		//定义一个变量,用于保存最大值
		//取数组中第一个数据作为变量初始值
		int max= arr[0];
		//与数组中剩余元素逐个比对,并将最大值保存在变量中
		for(int x=0;x<arr.length;x++){

			if(arr[x]>max){
				max=arr[x];
			}  

		}
		//循环结束后在控制台打印变量值
		System.out.println("max:"+max);
	}

到此这篇关于由浅入深快速掌握Java 数组的使用的文章就介绍到这了,更多相关Java 数组内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java数组的定义、初始化、及二维数组用法分析

    本文实例讲述了Java数组的定义.初始化.及二维数组用法.分享给大家供大家参考,具体如下: 数组的定义 1.数组是有序数据的集合,数组中的每个元素具有相同的数组名和下标来做唯一标识. 数组的分类 一维数组 二维数组 多维数组 数组的优点: 例如:定义100个整型变量.用数组很方便. 数组声明: 1.int [] array; 2.int array []; 数组的声明以及内存的分配 1.为数组分配内存空间,如果不分配内存,将不能访问它的任何元素.我们使用new关键字来为数组分配内存空间. int

  • JAVA基于静态数组实现栈的基本原理与用法详解

    本文实例讲述了JAVA基于静态数组实现栈.分享给大家供大家参考,具体如下: 1.栈的定义 栈是一种"先进后出"的一种线性数据结构,有压栈出栈两种操作方式.如下图: 2.栈的分类 栈主要分为两类: 静态栈 动态栈 [静态栈] 静态栈的核心是数组,类似于一个连续内存的数组,我们只能操作其栈顶元素. [动态栈] 静态栈的核心是数组,类似于一个连续内存的数组,我们只能操作其栈顶节点. 此节我们在我们之前封装的动态数组的基础上(引用封装好的动态数组),实现基本的栈操作. 3.栈实现 1.先定义一

  • Java数组队列概念与用法实例分析

    本文实例讲述了Java数组队列概念与用法.分享给大家供大家参考,具体如下: 一.队列的概念 (1)队列也是一种线性结构 (2)相比数组,队列对应的操作是数组的子集 (3)只允许在一端插入数据操作,在另一端进行删除数据操作,进行插入操作的一端称为队尾(入队列),进行删除操作的一端称为队头(出队列) (4)队列是一种先进先出的数据结构(FIFO) 此处我们先来学习一下顺序队列 ,顺序队列 就是用数组实现:比如有一个n个元素的队列,数组下标0的一端是队头,入队操作就是通过数组下标一个个顺序追加,不需要

  • Java对象数组定义与用法详解

    本文实例讲述了Java对象数组定义与用法.分享给大家供大家参考,具体如下: 所谓的对象数组,就是指包含了一组相关的对象,但是在对象数组的使用中一定要清楚一点:数组一定要先开辟空间,但是因为其是引用数据类型,所以数组里面的每一个对象都是null值,则在使用的时候数组中的每一个对象必须分别进行实例化操作. 对象数组的声明 先定义,再开辟空间 类名称 对象数组名[] = null; 对象数组名 = new 类名称[长度]; 定义并开辟数组 类名称 对象数组名[] = new 类名称[长度]; 在声明对

  • Java中args参数数组的用法说明

    main方法args参数用于接收用户输入的参数,参数以字符串形式存放在数组中. 这里将传递参数参数的形式分两种,一种是传递普通参数,另一种是传递含有空格的参数. 1.传递普通参数 public class Test { public static void main(String[] args) { for(String s : args){ System.out.println(s); } } } main方法接收参数以空格作为参数的分隔符号,第一个参数为"Hello",第二个参数是

  • 由浅入深快速掌握Java 数组的使用

    目录 1.数组定义格式 1.1 数组概述 1.2 什么是数组 1.3 数组的定义格式: 2.数组初始化之动态初始化 2.1 数组初始化概述 2.2 数组初始化方法 3.数组元素访问 3.1 数组元素访问 4.内存分配 4.1 java中的内存分配 4.2 数组内存图(单个数组) 4.3 多个数组内存图 5.数组初始化之静态初始化 6.数组操作的两个常见小问题 7.数组常见操作 7.1 遍历 7.2 获取数组元素个数 7.3 获取最值 1.数组定义格式 1.1 数组概述 * 一次性声明大量的用于存

  • 由浅入深快速掌握Java 数组的使用

    目录 1.数组定义格式 1.1 数组概述 1.2 什么是数组 1.3 数组的定义格式: 2.数组初始化之动态初始化 2.1 数组初始化概述 2.2 数组初始化方法 3.数组元素访问 3.1 数组元素访问 4.内存分配 4.1 java中的内存分配 4.2 数组内存图(单个数组) 4.3 多个数组内存图 5.数组初始化之静态初始化 6.数组操作的两个常见小问题 7.数组常见操作 7.1 遍历 7.2 获取数组元素个数 7.3 获取最值 1.数组定义格式 1.1 数组概述 * 一次性声明大量的用于存

  • Java数组优点和缺点_动力节点Java学院整理

    数组是Java语言的基本知识之一,在深入学习Java基础后,我们都知道那些容器,在之后,在我们学习.工作的过程中基本就是使用容器了,很少很使用数组,那么为什么还要有数组呢,我也是今天才遇到这个问题,专门的找资料学习了一下. 数组与其他种类的容器之间的区别有三方面:效率.类型和保存基本类型的能力,当然现在有泛型,保存类型的区别已经不大了. 数组较容器,最大的优点就是效率.在Java中,数组是一种效率最高的存储和随机访问对象引用序列的方式,数组就是一个简单的线性序列,这使得元素访问非常快速,无论使用

  • 关于JAVA 数组的使用介绍

    JAVA数组与容器类主要有三方面的区别:效率.类型和保存基本类型的能力.在JAVA中,数组是一种效率最高的存储和随机访问对象引用序列的方式.数组就是一个简单的线性数列,这使得元素访问非常快速.但是为此付出的代价却是数组的大小被固定,并且在其生命周期中不可改变. 由于范型和自动包装机制的出现,容器已经可以与数组几乎一样方便地用于基本类型中了.数组和容器都可以一定程度上防止你滥用他们,如果越界,就会得到RuntimeException异常.数组硕果仅存的优势便是效率,然而,如果要解决更一般化的问题,

  • 快速了解Java中NIO核心组件

    背景知识 同步.异步.阻塞.非阻塞 首先,这几个概念非常容易搞混淆,但NIO中又有涉及,所以总结一下. 同步:API调用返回时调用者就知道操作的结果如何了(实际读取/写入了多少字节). 异步:相对于同步,API调用返回时调用者不知道操作的结果,后面才会回调通知结果. 阻塞:当无数据可读,或者不能写入所有数据时,挂起当前线程等待. 非阻塞:读取时,可以读多少数据就读多少然后返回,写入时,可以写入多少数据就写入多少然后返回. 对于I/O操作,根据Oracle官网的文档,同步异步的划分标准是"调用者是

  • 快速了解Java中ThreadLocal类

    最近看Android FrameWork层代码,看到了ThreadLocal这个类,有点儿陌生,就翻了各种相关博客一一拜读:自己随后又研究了一遍源码,发现自己的理解较之前阅读的博文有不同之处,所以决定自己写篇文章说说自己的理解,希望可以起到以下作用: - 可以疏通研究结果,加深自己的理解: - 可以起到抛砖引玉的作用,帮助感兴趣的同学疏通思路: - 分享学习经历,同大家一起交流和学习. 一. ThreadLocal 是什么 ThreadLocal 是Java类库的基础类,在包java.lang下

  • 使用java数组 封装自己的数组操作示例

    本文实例讲述了使用java数组 封装自己的数组操作.分享给大家供大家参考,具体如下: 今天感冒了,全身酸软无力,啥样不想做,就来学习吧,此节我们从初步使用java中提供的数组,然后分析相关情况,过渡到封装我们自己的数组. 一.我们先来感受一下java提供的数组,以整型数组(int[])为例,相关代码如下: public class Main { public static void main(String[] args) { int[] arr = new int[10]; for(int i

  • 快速了解JAVA中的Random()函数

    Java中存在着两种Random函数: 一.java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布.例子如下: package IO; import java.util.Random; public class TestRandom { public static void main(String[] a

  • 快速了解JAVA垃圾回收机制

    说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理.顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为"垃圾"?那么当一些对象被确定为垃圾之后,采用什么样的策略来进行回收(释放空间)?在目前的商业虚拟机中,有哪些典型的垃圾收集器?下面我们就来逐一探讨这些问题.以下是本文的目录大纲: 如果有不正之处,希望谅解和批评指

  • Java 数组的两种初始化方式

    一.数组 1.数组中存储元素的类型是统一的,每一个元素在内存中所占用的空间大小是相同的,知道数组的首元素的内存地址,要查找的元素只要知道下标,就可以快速的计算出偏移量,通过首元素内存地址加上偏移量,就可以快速计算出要查找元素的内存地址.通过内存地址快速定位该元素,所以数组查找元素的效率较高. 2.随机的对数组进行增删元素,当增加元素的时候,为了保证数组中元素在空间存储上是有序的,所以被添加元素位置后面的所有元素都要向后移动,删除元素也是,后面所有的元素要向前移动,所以数组的增删元素​效率很低.

随机推荐