带你入门Java的数组

目录
  • 数组的定义
  • 数组的声明和创建
    • 1.动态初始化
    • 2.静态初始化
    • 3.数组的默认初始化
  • 数组的四个基本特点
  • 数组边界
  • 数组的使用
  • Arrays类
  • 总结

数组的定义

  • 数组是相同类型数据的有序集合
  • 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
  • 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。

数组的声明和创建

首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

dataType[] arrayRefVar;//首选方法
或
dataType arrayRefVar[];

Java语言使用new操作符来创建数组,语法如下:

dataType[] arrayRefVar = new dataType[arraySize];

数组的元素是通过索引访问的,数组索引从0开始。

获取数组长度:arrays.length

数组的创建的初始化方式:

1.动态初始化

int[] a = new int[5];

int[0] = 1; int[1] = 2;int[2] = 3;int[3] = 4;int[4] = 5;

2.静态初始化

int[] b = new int[]{1,2,3,4,5};

int[] c = {1,2,3,4,5};

3.数组的默认初始化

数组引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

数组的四个基本特点

  • 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
  • 其元素必须是相同类型,不允许出现混合类型
  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型
  • 数组变量属引用类型,数组也可以看成是对象,数组中每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身就在堆中

数组边界

下标合法区间:[0,length-1],如果越界就会报错;

ArrayIndexOutOfBoundsException:数组下标越界异常

小结

  • 数组是相同数据类型(数据类型可以为任意类型)的有序集合
  • 数组也是对象。数组元素相当于对象的成员变量
  • 数组长度的是确定的,不可变的。如果越界就会报错:ArrayIndexOutOfBoundsException

数组的使用

package com.cnblogs;
/*
 * 本类用于测试数组01	遍历数组
 */
public class TestArr1 {
	public static void main(String[] args) {
		int[] arr = {1,2,3,4,5,6,7,8,9};
		//遍历数组
		for(int i = 0; i < arr.length ; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println();
		System.out.println("=============================");
		//利用增强for循环遍历数组
		for(int x : arr) {
			System.out.print(x + " ");
		}
		System.out.println();
		System.out.println("=============================");
		//使用自己定义的遍历数组方法
		printArr(arr);
	}
	//定义一个遍历数组的方法
	public static void printArr(int[] arr) {
		for(int i = 0; i < arr.length ; i++) {
			System.out.print(arr[i] + " ");
		}
	}
}

多维数组

  • 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的数组,其每一个元素都是一个一维数组。
  • 二维数组
int[][] a = new int[2][5]//两行,五列
package com.cnblogs;
/*
 * 本类用于测试数组01	遍历二维数组
 */
public class TestArr2 {
	public static void main(String[] args) {
		int[][] arr = {{1,2},{2,3},{3,4},{4,5}};
		for(int i = 0 ; i < arr.length ; i++) {
			for(int j = 0 ; j < arr[i].length ; j++) {
				System.out.print(arr[i][j] + " ");
			}
			System.out.println();
		}
	}
}

Arrays类

  • 数组工具类java.util.Arrays
  • 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本操作
  • 查看JDK帮助文档
  • Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用(是“不用”而不是“不能”)
  • 具有以下常用功能
    • 给数组赋值:通过fill方法
    • 对数组排序:通过sort方法,按升序
    • 比较数组:通过equals方法比较数组中元素是否相等
    • 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作
    • 把数组赋值成一个指定长度的新数组:通过 Arrays.copyOf(数组,新的长度)方法
      • 新数组的长度 大于 原数组, 相当于复制,并增加位置
      • 新数组的长度 小于 原数组, 相当于截取一部分数据
package com.cnblogs;
/*
 * 本类用于测试数组03	Arrays类
 */
//导入Arrays类
import java.util.Arrays;
public class TestArr3 {
	public static void main(String[] args) {
		int[] arr = {1,2,3,4,5,6,28,15,13,9};
		System.out.println(arr);//[I@3fb6a447  这里打印的是内存地址
		//打印数组元素
		System.out.println(Arrays.toString(arr));//[1, 2, 3, 4, 5, 6, 28, 15, 13, 9]
		//数组进行排序,升序
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));//[1, 2, 3, 4, 5, 6, 9, 13, 15, 28]
        //数组的填充
        Arrays.fill(arr,6);
        System.out.println(Arrays.toString(arr));//[6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
        Arrays.fill(arr,2,4,8);//填充2-4  包括2 不包括4
        System.out.println(Arrays.toString(arr));//[6, 6, 8, 8, 6, 6, 6, 6, 6, 6]
	}
}

总结

本篇文章就到这里了,希望能够帮到您,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Java数组与堆栈相关知识总结

    一.数组创建 1.1 声明并赋值 int[] a = {1,2,3}; 1.2 声明数组名开辟空间并且赋值 int[] a; a = new int[]{1,2,3}; 1.3 声明数组时指定元素个数然后赋值 int[] a= new int[3]; 这里Java会默认数组元素值为0 1.4 在以上的基础上创建多维数组 int[][] a = {{1,2,3},{4,5,6},{7,8,9}}; //每个子数组元素个数不要求均相同 int[][] a = new int[m][n]; //其中n

  • java对象数组实现学生信息管理系统

    本文实例为大家分享了Java实现学生信息管理系统,供大家参考,具体内容如下 一.功能需求 case 10:添加学生 case 11:查找一个学生 case 12:根据编号更新学生基本信息 case 13:根据编号删除学生 case 14:根据编号录入成绩 case 15:根据某门成绩排序 case 16:根据总成绩排序 case 99:退出系统 二.代码框架 一共有三个文件: 1.Student.java(学生类) //学生的基本信息 2.StudentAdmin.java(学生管理类) //用

  • 新手了解java 集合基础知识(二)

    目录 三.Map 1.HashMap 2.TreeMap 3.ConcurrentHashMap 总结 三.Map ​ 存储的双列元素,Key是无序的,不可重复,而Value是无序,可重复的. 1.HashMap public class HashMapDemo { private Map map = null; public void init() { map = new HashMap(); map.put("a", "aaa"); map.put("

  • Java实现二维数组和稀疏数组之间的转换

    前言 用Java实现二维数据和稀疏数组之间的转换 1. 需求和思路分析 1.1 以二维数组的格式模拟棋盘.地图等类似的二维结构为基础,与稀疏数组之间进行转化. 1.2 思路分析 二维数组转化为稀疏数组 遍历原始的二维数组,得到有效数据个数 sum 根据sum就可以创建稀疏数组sparseArr int[sunm+1][3] 将二维数组的有效数据存入到稀疏数组 稀疏数组转为二维数组 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组 再读取稀疏数组后几行的数据,并赋给原始的二维数组即可.

  • Java 数组内置函数toArray详解

    java.util.List中的toArray函数 java.util.List<E> @NotNull public abstract <T> T[] toArray(@NotNull T[] a) Returns an array containing all of the elements in this list in proper sequence (from first to last element); the runtime type of the returned

  • 带你入门Java的数组

    目录 数组的定义 数组的声明和创建 1.动态初始化 2.静态初始化 3.数组的默认初始化 数组的四个基本特点 数组边界 数组的使用 Arrays类 总结 数组的定义 数组是相同类型数据的有序集合 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们. 数组的声明和创建 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法: dataType[] arrayRefVar;//首选方法 或 data

  • 带你入门Java的类与对象

    目录 类和对象 类的属性 成员方法 形参和实参 局部变量 可变参数 构造方法 this关键字 this.属性名 this.方法名 static关键字 静态变量 1)静态变量 2)实例变量 静态方法 静态代码块 对象的创建 显式创建对象 方法隐含创建对象 总结 匿名对象 总结 类和对象 在面向对象中,类和对象是最基本.最重要的组成单元.类实际上是表示一个客观世界某类群体的一些基本特征抽象.对象就是表示一个个具体的东西.所以说类是对象的抽象,对象是类的具体. "人类"只是一个抽象的概念,它

  • 带你入门Java的泛型

    目录 泛型 1.简单泛型 (1)元组 (2)堆栈 2.泛型接口 3.泛型方法 (1)类型推断 (2)通用的Generator (3)Set实用工具实现数学方法 4.擦除 (1)迁移兼容性 (2)擦除的问题 5.擦除的补偿 (1)由于擦除原因,无法通过instanceof比较类型.如果引入类型标签,就可以转而使用动态的isInstance(). (2)创建类型实例 (3)泛型数组 6.边界 7.通配符 (1)List<? extends Fruit>协变 (2)List<? super F

  • 带你入门Java的集合

    目录 java集合 集合分类---Set.List.Map三种大体系 Set HashSet HashCode()方法 TreeSet 自然排序 List List与ArrayList ArrayList和Vector Map TreeMap 操作集合的工具类:Collections 查找.替换 同步控制 泛型 为什么要有泛型 枚举类 Annotation(注解)概述 基本的Annotation 自定义Annotation 总结 java集合 java集合类存放于java.util包中,是一个用

  • 一篇文章带你入门java泛型

    目录 一.什么是泛型 二.语法 三.示例 1.简单示例 2.返回最大值-支持各种数据类型 3.泛型类 4.类型通配符 总结 一.什么是泛型 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数. 二.语法 你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数.根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用. 下面是定

  • 一篇文章带你入门java集合

    目录 一.简介 1.java集合框架图 2.集合框架体系 3.Set和List的区别 二.ArrayList 1.定义 2.用实例了解ArrayList 三.LinkedList 1.语法 2.示例 四.HashSet 1.定义 2.语法 3.示例 五.HashMap 1.定义 2.语法 3.示例 Java HashMap 方法 六.Iterator(迭代器) 1.定义 2.示例 七.List和数组互转 总结 一.简介 1.java集合框架图 从上面的集合框架图可以看到,Java 集合框架主要包

  • 一篇文章带你入门Java修饰符

    目录 定义 分类 访问控制修饰符 非访问控制修饰符 修饰符的使用说明 修饰类 修饰方法 访问控制修饰符 非访问控制修饰符 修饰变量 总结 定义 Java修饰符:修饰符用来定义类.方法或者变量,通常放在语句的最前端. 分类 主要分为2类: 访问控制修饰符 非访问控制修饰符 访问控制修饰符 可以使用访问控制符来保护对类.变量.方法和构造方法的访问.分为以下4中权限:private,default,protected,public. 权限说明: 修饰符 当前类 同包 子类(不同包) 不同包(其他类)

  • 一篇文章带你入门Java数据类型

    目录 引言 两个基本概念 说明 数据类型分类 基本数据类型 引用数据类型 两者的区别 总结 引言 ♀ 小AD:明哥,昨天气死我了,明哥要帮我出气. ♂ 明世隐:咋了,有谁惹到你了. ♀ 小AD:昨天辅助喷我小鲁班菜,我反手就对喷,然后竟然丢脸了! ♂ 明世隐:这个我是不信的,论喷的功力,你貌似不在明哥之下,没那么容易就败北的. ♀ 小AD:明明就丢脸了吗 ♂ 明世隐:你这一喷20年的功力,这些小学生顶得住? ♀ 小AD:哼..那我不说了! ♂ 明世隐:好了好了,说说看. ♀ 小AD:是小学生喷不

  • 一篇文章带你入门Java Script

    目录 概述 特点 和Java的区别 弱类型语言 强类型语言 书写位置 数组 函数 JS中的自定义对象(扩展内容) Object形式的自定义对象 JS中的事件 常用的事件: 动态注册基本步骤: DOM模型 总结 概述 JavaScript是目前web开发中不可缺少的脚本语言,js不需要编译即可运行,运行在客户端,需要通过浏览器来解析执行JavaScript代码. JS组成部分: 组成部分 作用 ECMA Script 构成了JS核心的语法基础 BOM Browser Object Model 浏览

  • 一篇文章带你入门Java字面量和常量

    目录 引言 概念 字面量 字面量的分类 常量 总结 引言 ♀ 小AD:哥,前两天我没有闪现到刺客脸上了吧 ♂ 明世隐:在这方面做的有进步. ♀ 小AD:明哥教的好,通过学习Java关键字,游戏水平也得到了提升,一举两得,舒服. ♂ 明世隐:可是你看到残血还是上头啊,是了多少次,你说? ♀ 小AD:5.6次吧 ♂ 明世隐:岂止5.6,起码10次. ♀ 小AD:这不是看到200金币,经不住诱惑吗 ♂ 明世隐:关爱残血,你学哪里去了,游戏中就不能多一些人间的关爱吗?你就不能关爱一下放暑假的小弟弟小妹妹

随机推荐