数组

文章目录

  • 数组
    • 1. 生活中的数组
    • 2. 代码中对于数组的需求
    • 3. Java中定义数组的格式
    • 4. 在代码中使用数组
    • 5. 数组内存分析图
    • 6. 数组和for循环不得不说的默契
    • 7. 数组和方法不得不说的规范
    • 8. 数组使用案例

1. 生活中的数组

超市浪味仙 奥利奥 麦丽素图书馆书籍的存放,会按照归纳总结的思想来存放T 社科类书籍T-235 《电路》 235 表示这是目前图书馆中社科类书籍的235号T-235-01 ~ 10 表示有10本《电路》每一本都有一个独立的编号,并且是一个独立的个体总结:1. 这本书有一个唯一标示 T-2352. 这十本书是存放在书架的同一个位置,占据同一个空间3. 每一本数有一个独立的编号,区分独立的个体

2. 代码中对于数组的需求

 在代码中会出现对于变量需求量很大的情况,那么这里需要采用一些统一的方式,如果使用的是最原始的单一变量操作,会导致以下一些问题1. 代码过于臃肿!!!2. 代码阅读性极差!!!3. 代码维护性极差!!!4. 代码操作性极差!!!比葫芦画瓢,参考一些生活实例1. 给这些数据起一个统一的名字2. 存放到同一个内存位置3. 每一个数据都有一个独立的编号

3. Java中定义数组的格式

// 格式
数据类型[] 数组名 = new 数据类型[容量]; // capacity赋值号左侧数据类型:告知编译器当前数组中能够保存的数据类型是要求哪一个类型,而且有且只能是当前指定的数据类型,其他类型都无法保存,这是标准【数据类型一致化】[]:1. 表示这里定义的是一个数组2. 表示数组名是一个【引用数据类型】的【变量】数组名:1. 操作数据非常重要的一个名字2. 数组名是一个【引用数据类型】的【变量】赋值号右侧:new:创建数组使用内存空间的关键字,存在 new 就一定存在内存【堆区】的使用数据类型:前后呼应,要求和赋值号左侧完全一致,告知编译器,数组能够保存的数据类型到底是什么类型[容量]:告知编译器,当前数组中能够保存的元素最多是多少个,并且创建定义之后,数组容量不可以改变!!!

4. 在代码中使用数组

数组中的核心数据有效下标!!!有效下标的范围是从 0 开始,到数组的容量 - 1如果数组的容量为10,有效下标范围是 0 ~ 9。并且数组的下标范围没有负数!!!超出有效下标范围,就是数组越界操作!!!ArrayIndexOutOfBoundsException 数组下标越界异常
class Demo2 {public static void main(String[] args) {/*数据类型[] 数组名 = new 数据类型[容量];创建一个int类型数组这里创建的是一个可以最多可以保存10个int类型数据的一个数组数组名叫做array*/int[] array = new int[10];/*操作指定下标的元素,需要的格式是数组名[有效元素]*/array[0] = 10;array[5] = 20;// array[10] = 100; java.lang.ArrayIndexOutOfBoundsException: 10// array[-1] = 10; java.lang.ArrayIndexOutOfBoundsException: -1System.out.println("array[0] = " + array[0]);System.out.println("array[5] = " + array[5]);}
}

5. 数组内存分析图

6. 数组和for循环不得不说的默契

for (循环条件初始化; 循环条件判断; 循环条件变更) {循环体;
}数组中有一个非常重要的数据,有效下标范围!!!
class Demo3 {public static void main(String[] args) {// 定义一个int类型的数组,容量为10int[] arr = new int[10];/*利用for循环遍历数组arr.length 获取当前数值的容量 Capacity*/for (int i = 0; i < arr.length; i++) {// 给数组中每一个元素赋值对应arr[i] = i + 1;}for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}
}

7. 数组和方法不得不说的规范

class Demo4 {public static void main(String[] args) {// 定义一个int类型的数组,容量为10int[] arr = new int[10];// 调用方法,需要的参数是数组类型,这里传入数组名即可!!!setIntArray(arr);printIntArray(arr);}/*需求给int类型数组赋值内容方法分析:public static 不要问返回值类型:void类型,不需要返回值方法名:setIntArray 形式参数列表:int[] array int类型数组作为方法从参数方法声明:public static void setIntArray(int[] array)*//*** 给予一个int类型数组赋值操作** @param array int类型数组*/public static void setIntArray(int[] array) {for (int i = 0; i < array.length; i++) {// 给数组中每一个元素赋值对应array[i] = i + 1;}}/*需求:展示一个int类型数组中的元素内容方法分析:public static 不要问返回值类型:void方法名:printIntArray形式参数列表:int[] array int类型数组作为方法的参数方法声明:public static void printIntArray(int[] array)      *//*** 展示一个int类型数组中的元素内容** @param array 需要展示的int类型数组*/public static void printIntArray(int[] array) {for (int i = 0; i < array.length; i++) {System.out.println(array[i]);}}
}

8. 数组使用案例

/*
1. 在一个int类型数组中,找出最大值所在下标位置
需求:int类型数组中,找出最大值的下标位置
方法分析:public static 不要问返回值类型:这里需要返回找到的最大值下标位置,而数组的有效下标位置范围是在int范围以内,int类型作为返回值方法名:findMaxIndex形式参数列表:功能是在一个int类型数中找出对应的最大值下标,这里需要一个int类型数组int[] array方法声明:public static int findMaxIndex(int[] array)
*/
/**
* 找出int类型数组中最大值的下标位置
*
* @param array int类型数组
* @return 返回最大值的下标位置
*/
public static int findMaxIndex(int[] array) {// 拿出数组中下标为0的元素所在参照物int maxIndex = 0;// 使用for循环遍历数组,再加上if判断,比较数组中元素的大小for (int i = 1; i < array.length; i++) {/* 使用if判断,如果发现maxIndex下标对应的数据,小于i下标的数据,保存对应的i值*/if (array[maxIndex] < array[i]) {maxIndex = i;}}// 使用return关键字,返回maxIndexreturn maxIndex;
}
/*
2. 在一个int类型数组中,找出最小值所在下标位置
需求:找出int类型数组中最小值下标位置
方法分析:public static 不要问返回值类型:找出的数据是数组中的下标,而数组的有效下标范围是int类型,int类型方法名:findMinIndex形式参数列表:int类型的数组int[] array方法声明:public static int findMinIndex(int[] array)
*/
/**
* 找出int类型数组中最小值的下标位置
*
* @param array int类型的数组
* @return 返回值大于等于0,表示最小值的下标位置,如果返回-1 表示方法运行失败,参数不合法!!
*/
public static int findMinIndex(int[] array) {/* 参数合法性判断如果传入的数组满足以下条件,证明当前方法是无法正常运行null == array 见多你就习惯了~array.length 数组容量为0,运行该方法没有意义*/if (null == array || array.length == 0) {System.out.println("Input parameter is invalid!传入参数不合法!!!");// 终止方法运行// 返回值要求int类型,这里返回任何一个大于等于0都是不合理的,有可能是合法下标范围// 以内,唯一能够确定的非法下标,同时也可以告知方法外运行失败的数据就是负数下标// -1通常都是数组操作中首选的一个非法下标return -1; }int minIndex = 0;for (int i = 1; i < array.length; i++) {if (array[minIndex] > array[i]) {minIndex = i;}}return minIndex;
}
/*
3. 找出指定元素在int类型数组中的下标位置,找到返回值大于等于0 ,没有找到返回-1
需求:找出数组中指定元素的下标
方法分析:public static 不要问返回值类型:返回值是在有效下标范围以内,所以为int类型int方法名:indexOf index 下标 of 谁的形式参数列表:1. 指定的数组,int类型的数组 int[] array2. 指定的查询元素 int find(int[] array, int find)方法声明:public static int indexOf(int[] array, int find)
*/
/**
* 找出数组中指定元素的下标位置,找到返回值大于等于0,没有找到返回-1
*
* @param array 查询数据的int类型数组
* @param find 指定查询的数据
* @return 找到对应的元素,返回值大于等于0,没有找到返回-1
*/
public static int indexOf(int[] array, int find) {// 参数合法性判断if (null == array || array.length == 0) {System.out.println("传入参数不合法!!! Input Parameter is Invalid!!!");// 参数不符合要求,结束当前方法运行,返回-1return -1;}/*保存下标的变量,初始化为-1。假定当前指定的元素不存在*/int index = -1;/*1 3 5 7 9 find 6index = -1*//* 利用循环遍历整个数组 */for (int i = 0; i < array.length; i++) {/* 如果发现了对应的数组,保存下标i 到index中,同时跳出循环 */if (find == array[i]) {index = i;break;}}return index;
}
/*
4. 使用0替换int类型数组中的指定元素
需求:使用指定元素,替换指定内容
方法分析:public static 不要问返回值类型:boolean 作为方法的运行状态监视,返回true表示运行成功,false表示失败方法名:replace 替换形式参数列表:1. 替换数据的数组 int[] arr2. 指定替换的数据 int num(int[] arr, int num)public static boolean replace(int[] arr, int num)
*/
/**
* 在指定数组中,使用0,替换掉指定的元素
*
* @param arr 替换数据的数组
* @param num 指定替换的内容
* @return 方法运行成功返回true, 失败返回false
*/
public static boolean replace(int[] arr, int num) {// 参数合法性判断if (null == arr || arr.length == 0) {System.out.println("Input Parameter is Invalid!!!");return false;}// 利用循环遍历数组,找出对应的数据,使用0 赋值操作即可for (int i = 0; i < arr.length; i++) {if (num == arr[i]) {arr[i] = 0;}}return true;
}
/*
5. 从键盘上获取数据保存到int类型数组中
需求:从键盘上要求用户输入数据,保存到int类型数组中方法分析:public static 不要问返回值类型:boolean 需要对传入的数组进行判断,方法运行OK 返回true,否则 false方法名:getNumberFromStdin形式参数列表:这里只需要一个int类型的数组(int[] array)方法声明:public static boolean getNumberFromStdin(int[] array)
*/
/**
* 从键盘上获取int类型数据,保存到指定的int类型数组中
*
* @param array 指定的int类型数组
* @return 方法运行成功返回true, 失败返回false
*/
public static boolean getNumberFromStdin(int[] array) {// 参数合法性判断if (null == array || array.length == 0) {System.out.println("Input Parameter is Invalid!");return false;}// 提供一个扫描器Scanner sc = new Scanner(System.in);System.out.println("请输入" + array.length + "个数据:");for (int i = 0; i < array.length; i++) {array[i] = sc.nextInt();}return true;
}
/*
6. 在int类型数组中,找出指定下标的元素。需要考虑参数合法性问题
需求:一个数组,给我一个下标,我还你一个世界
方法分析:public static 不要问返回值类型:这里操作的是一个int类型数组,并且获取的数据也是当前数组中的内容,那就是int类型方法名:get √形式参数列表:1. int类型数组2. 指定的下标位置(int[] array, int index);方法声明:public static int get(int[] array, int index)
*/
/**
* 在一个正数int类型数组中,找出指定下标的元素
*
* @param array int类型数组
* @param index 指定的下标位置
* @return 返回值是找到的对应元素,结果大于0,表示正常,如果是-1,表示参数存在问题
*/
public static int get(int[] array, int index) {// 参数合法性判断if (null == array || array.length == 0 || index < 0 || index > arr.length - 1) {System.out.println("Input Parameter is Invalid!");// 这里返回-1,表示参数不合法!!!return -1; }return array[index];
}
* 在一个正数int类型数组中,找出指定下标的元素
*
* @param array int类型数组
* @param index 指定的下标位置
* @return 返回值是找到的对应元素,结果大于0,表示正常,如果是-1,表示参数存在问题
*/
public static int get(int[] array, int index) {// 参数合法性判断if (null == array || array.length == 0 || index < 0 || index > arr.length - 1) {System.out.println("Input Parameter is Invalid!");// 这里返回-1,表示参数不合法!!!return -1; }return array[index];
}

Java基础 :Day05-数组相关推荐

  1. 小汤学编程之JAVA基础day05——数组

    一.概念 1.什么是数组      2.为什么要用到数组 二.使用方法 1.声明并分配空间      2.赋值     3.处理数据 三.数组的各种应用 1.求数组中最大/最小值      2.数组反 ...

  2. Java 基础 利用数组来实现银行注册开户、存钱、取钱

    Java 基础 利用数组来实现银行注册开户.存钱.取钱 1.主界面 放置于BankSystem类中 思路: (1)用输入语句完成主界面的编写 (2)用Scanner实现键盘录入数据 (3)用switc ...

  3. Java基础-遍历数组

    Java基础-遍历数组 1.语法简介 2.一维数组 3.二维数组 4.三维数组 1.语法简介 在Java中,对for语句的功能给予了扩充.加强,以便更好的遍历数组. 语法格式如下: for(声明循环变 ...

  4. Java基础之数组与集合

    Java基础之数组与集合 一.数组 二.冒泡排序算法 三.选择排序算法 四.二维数组 五.Arrays 工具 六.宠物管理系统 七.集合 Collection 八.List 九.重写 equals 方 ...

  5. 一文带你深入理解【Java基础】· 数组

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  6. java基础(十) 数组类型

    ###1. 数组类简介 在java中,数组也是一种引用类型,即是一种类. 我们来看一个例子,理解一下数组类: public static void main(String[] args) {Class ...

  7. Java基础:数组的声明,循环,赋值,拷贝。

    数组的声明 一般有两种形式的声明: int[] a; int a[]; 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号. 声明一个数组,并没有将a正在的初始化为一个数组 ...

  8. Java基础之数组练习

    1.java能动态分配数组吗? 答:可以.int i = 12;int[] myInt = new int[i]; 2.我怎么知道数组的长度? 答:'.length'属性获取 3.数组有没有lengt ...

  9. java 基础知识-数组的7种算法(排序、求和、最值、遍历...)

    遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5];Scanner inp ...

  10. java基础_数组常用算法

    求数组最大值代码如下 package java_test; /*求数组的最大值* */ class Sdent{public void inputMax(int [] a){int max=a[0]; ...

最新文章

  1. qmake 简易教程
  2. codeforces水题100道 第五题 Codeforces Round #304 (Div. 2) A. Soldier and Bananas (math)
  3. Linux系统颜色默认表示的文件类型
  4. 编程之美 set 17 拈游戏分析 (2)
  5. 我的新发现:AVL树旋转的一个特性
  6. .Net Core 3.0下AOP试水~~
  7. cross-domain policy file
  8. 最新阿里聚划算Java 5轮面试题,涵盖GC收集器、多线程锁等
  9. 平塘天眼和大数据有什么关系_贵州平塘的中国天眼,值得去吗?除了天眼,平塘还有什么好玩?...
  10. excel表中怎么插入visio_Excel工作表中的排序,你真的掌握吗?10张动图带你了解!...
  11. jquery.validator验证后ajax提交出现错误解决
  12. 03 验证合法性连接的服务端
  13. 计算机系统访问控制的功能,访问控制是为了限制访问主体对访问客体的访问权限,从而使计算机系统在合法范围内使用的安全措施,以下关于访问控制的叙述中,()是不正确的 - 信管网...
  14. static import java_Java 静态导入Static import
  15. nachos中文教程java_Nachos3.4系列-2 Makefile 与Nachos中文教程 【转】
  16. GitHub 上受欢迎的 Android UI Library 整理一
  17. 车用总线技术 | 从另一种视角了解CAN FD
  18. 1招提升Java单元测试ROI
  19. mysql就业方向_SQL数据库专业的就业方向
  20. 工作态度决定了你的层次

热门文章

  1. 20年会计应届生转行软件测试,拿下8k+offer是如何做的
  2. 英语基础-名词性从句
  3. 单位系统被黑客入侵,怎么应对?
  4. 【IEEE_SV-21.3.3】数据格式化为字符串
  5. 计算机验证你的身份,验证您的身份在这台电脑 – Windows 10 | MOS86
  6. Pizza Day丨跟本仔念:我!要!吃!披!萨!
  7. 【论文分享】ARCUS: Symbolic Root Cause Analysis of Exploits in Production Systems
  8. 黄聪mysql_黄聪:mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法
  9. 一套完整的外贸网站SEO优化流程
  10. Lyndon的量化修炼之路——随机指标(KDJ)优化策略(一)