一堆数组总结的简单总结**

概念

数组:可以存储多个元素的一个容器。
前提条件:这个多个元素的类型()必须是一致的。

定义一个数组,格式有两种
1)数据类型[]数组名称;例如:int[]arrary;
2)数据类型 数组名称[];int arrary[];
这两类型都是对的

一堆数组的初始化

在定义一个数组时,没有为它的元素分配存储空间,因此该数组不能直接使用,经过初始化,为数组分配内存空间,才能完成一个数组的创建

1)动态初始化

定义了数组的长度,里面的元素值默认系统给定值(默认值);
数据类型[]数组名称=new 数据类型[数组长度];例如int[]arrary=new int3;
数据类型[]数组名称;
数组名称=new 数据类型[数组长度];例如int[]arrary;array=new int3;
注意事项:在java中,数组的索引值的值是从0开始,不是1;

int[]arrary=new int3;
int:当前数组的类型为int类型;
[ ]:表示定义的是一个一堆数组;
arrary:数组名称(小驼峰式);
new:在java语法中就是在堆内存中开辟空间
int:定义的是一个int类型的数组;

注意事项:长度为第3,元素分别为:arrar[0],arrar[1],arrar[2];

2)数组的静态初始化:

数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3…};
数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3…} ;
简写格式:
数据类型[] 数组名称 = {元素1,元素2,…} ;
数据类型 数组名称[] = {元素1,元素2,…} ;

注意事项:定义数组的时,不能同时动态和静态集合使用!
举例:int[] arr = new int3{1,2,3} ; //错误写法: 动静结合!

数组的简单练习

Test1:

/*需求:遍历数组中的元素遍历:就是将数组中的元素获取到并一一打印出来!
*/
public class Test1{//定义一个类public static void main(String[]args){//main主方法int[]array={1,2,3,4,5};//定义一个静态数组printArray(array);//对方法进行调用}public static void printArray(int[]array){//定义一个方法for(int i=0;i<array.length;i++){//因为数组的索引值是从0开始,所有i是从0开始,索引值是小于array.length的System.out.println(array[i]);//遍历数组中的元素}}
}

Test2

/*[元素1, 元素2, 元素3, ...]*/
public class Test2{//定义一个类public static void main(String []args){//main主方法int[]array={1,2,3,4,5};//定义一个静态数组printArray(array);//对方法进行调用}
public static void printArray(int[]array){//定义一个方法System.out.print("[");//打印一个],去ln掉,就是不换行for(int i=0;i<array.length;i++){//让数组进行遍历if(i==array.length-1){//进行条件判断当判断是最后一个元素时System.out.println(array[i]+"]");//输出最后一个元素,并且有ln表示下一行换行,不加ln也是可以的,就是下一行不换行而已}else{System.out.print(array[i]+", ");//否择输出其他的元素}} }
}

Test3

/*数组中的最值问题:给定一个数组,{1,2,3,4,5} 求出数组的最大值问题*/
public class Test3{//定义一个类public static void main(String []args){//main主方法int []array={1,2,3,4,5};//定义一个数组printArray(array);//方法的调用}
public static void printArray(int []array){//定义一个方法int max=array[0];//现给定一个初始元素,就是用第一号元素去和其他元素进行比较for(int i=1;i<array.length;i++){//注意这个要写i=1,因为要和第二个元素进行比较,如果写成0,就是自己和自己比较一次if(array[i]>max){//当第i号元素大于max时,将第i号元素赋值给max即可,如果max是最大值,直接输出即可max=array[i];}}System.out.println("数组中的最大值为"+max);//输出最大值}
}

Test4

/*数组中的应用:元素逆序给定一个数组{1,2,3,4,5} 元素逆序:将索引值0对应的元素和arr.length-1对应的元素互换将索引值1对应的元素和arr.length-1-1对应的元素进行互换...依次这样....最终只要保证 角标 < arr.length/2*/
public class Test4{//定义一个public static void main(String []args){int[]array={1,2,3,4,5};printArray(array);printArray1(array);}public static void printArray(int[]array){//定义一个方法for(int i=0;i<array.length/2;i++){//要实行数组元素的逆序就是第一个元素与最后一个元素进行调换,然后依次递进,第二个元素与倒数第二个元素进行调换,以数组中间为分界线,如果是奇数个自己与自己不需要进行交换,所以是小于不需要等于int temp=array[i];array[i]=array[array.length-1-i];array[array.length-1-i]=temp;}  }public static void printArray1(int[]array){//最后实行数组的遍历System.out.print("[");for(int x=0;x<array.length;x++){if(x==array.length-1){System.out.print(array[x]+"]");}else{System.out.print(array[x]+", ");}}}}

Test5

/*获取数组中某个元素第一次出现的索引值的方法两个明确1)明确返回值类型 int2)明确参数类型以及参数个数int类型 两个参数:在某个数组中查询某个元素*/
public class Test5{public static void main (String []args){int[] array={1,2,3,4,5};//定义一个数组int index=printArray(array,5);System.out.println(index);}public static int printArray(int[] array,int value){//定义一个方法,我们需要传一个数组,一个元素for(int i=0;i<array.length;i++){if(array[i]==value){//当我们输出的值与数组元素值相等时,我们取出元素的索引值return i;//我输入的是5,注意他的索引值是4,因为索引值是从0开始的}} return -1;//当我们输出的元素在数组中没有的时候我们返回一个值,可以是其他值}
}

Test6

/*
冒泡排序
一组数据,从头重复地走访过要排序的元素列,依次比较两个相邻的元素,
如果顺序(从小到大)错误就把他们交换过来,直到没有相邻元素需要交换,每次都可以确定一个最大数*/
public  class Test6{public static void main(String []args){int []array={1,3,5,1};printArray(array);//方法的调用printArray1(array);}public static void printArray(int[]array){for(int i=0;i<array.length-1;i++){//外循环控制次数,如果写成array.length,也是可以的,只不过多比一次for(int j=0;j<array.length-1-i;j++){//内循环防止角标越界,所以是array.length-1,如果是array.length后面加一个1就越界了if(array[j]>array[j+1]){//拿第一个元素与后面一个元素进行两两比较,如果大,就进行交换,每次都可以确定一个最大的数字,循环次数就少一次int temp=array [j];array[j]=array[j+1];array[j+1]=temp;}}}}public static void printArray1(int[]array){//最后实行数组的遍历System.out.print("[");for(int x=0;x<array.length;x++){if(x==array.length-1){System.out.print(array[x]+"]");}else{System.out.print(array[x]+", ");}}}}

对于冒泡排序的演示

从上面的截图可以看出在i=2时就可以比较出来了,没有必要在执行一次,所以就是array.length-1,而内循环就更好理解了,当j=3时,j+1是4,就角标越界了

自我总结

​ 因为自己对数组的理解还是不够用深刻,所对数组做了总结,尤其是对于冒泡,两个for循环的嵌套的理解,所以自己就拿普通的数字进行了尝试,才搞明白,对于学习而言,要不断地总结,不断地去联系,才能理解更加深刻,可以先拿常量进行尝试在将变量附加进去就理解更加深刻了,可能图画的有点,菜鸟也有菜鸟的方法吗。

菜鸟阿鑫对于一堆数组的总结以及理解相关推荐

  1. Java语言程序设计 上机实验2 掌握Java的基本语言成分和流程控制语句。 掌握Java中数组的使用,理解引用数据类型。 掌握String类的使用。...

      Java语言程序设计 上机实验2 实验目的: 掌握Java的基本语言成分和流程控制语句. 掌握Java中数组的使用,理解引用数据类型. 掌握String类的使用. 实验内容: 注:标(*)为选做内 ...

  2. C语言一维/二维数组解引用难理解点以及一道难题

    C语言指针相关的坑爹题 先来一点简单的 求下面各代码打印结果(32位环境): int a[3][4] = {0}; printf("%d\n",sizeof(a)); printf ...

  3. 指向数组的指针的理解

    指向数组的指针的理解 开发工具与关键技术:Visual Studio.C++ 作者:张国军 撰写时间:2019年05月03日 数组和指针是两种不同的类型,数组具有确定数量的元素,而指针只是一个标量值. ...

  4. 【C语言】一堆数组中存放了10个小于100的整数,请编程对所有数据按照从小到大的顺序进行排序,若个位数相等,则按照十位从小到大的顺序排序,输出排序后的结果...

    分析:取余,判断个位是否相等,利用冒泡法排序 #include <stdio.h> int main() {int a[10] = { 11,22,33,44,15,20,17,30,10 ...

  5. 菜鸟教程java二维数组_asp数组的使用介绍

    Dim MyArray MyArray = Split(字符串,分割符) For I = Lbound(MyArray) to Ubound(MyArray) Response.Write MyArr ...

  6. java 动态二维数组,菜鸟求助: 二维数组如何实现动态接收?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这个东西 只能具体情况具体分析 我给你个例子吧 多研究研究 public class NxnMethod { public void Print(int ...

  7. java 二维数组动态添加,菜鸟求助: 二维数组如何实现动态接收?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这个东西 只能具体情况具体分析 我给你个例子吧 多研究研究 public class NxnMethod { public void Print(int ...

  8. 【C 语言】数组 ( 多维数组本质 | 步长角度 理解 多维数组本质 )

    文章目录 一.从 步长角度 理解 多维数组本质 二.代码示例 一.从 步长角度 理解 多维数组本质 声明一个二维数组 ; // 声明一个多维数组int array[2][3]; 二级指针 : arra ...

  9. 多个数字数组_1分钟彻底理解JavaScript的数组与函数

    1 - 数组 1.1 数组的概念 - 数组可以把一组相关的数据一起存放,并提供方便的访问(获取)方式. - 数组是指**一组数据的集合**,其中的每个数据被称作**元素**,在数组中可以**存放任意类 ...

  10. vue 数组长度_深入理解Vue的数据响应式

    什么是响应式 当一个物体对外界的变化做出反应就叫响应式的,如"我打你一拳,你会喊疼". Vue的数据响应式 就是对数据做出改变时,视图上也会做出相应的变化. 举个例子 1const ...

最新文章

  1. servelet基础
  2. php redis mset,MSET命令_视频讲解_用法示例-redis编程词典-php中文网
  3. php连接mysql数据库的连接类
  4. Linux 服务器注意事项
  5. java将date类型转成yyyymmdd_java中的Date怎么转换成YYYYMMDD形式?
  6. 2-1:C++快速入门之命名空间
  7. python编写数据库连接工具_详解使用Python写一个向数据库填充数据的小工具(推荐)...
  8. enableEventValidation是干什么的?
  9. Centos 7 安装 java、搭建 Jenkins
  10. Atitit webservice发现机制 WS-Discovery标准的规范attilax总结
  11. java 上传文件编码_java文件传输之文件编码和File类的使用
  12. JLink重刷固件(win7/win8/win10亲测可用)
  13. numpy-poly1d、polyfit、polyval多项式使用
  14. pdf压缩器如何将文件压缩变小
  15. 【经典详解】<T> T 和 T的用法和区别,public <T> List<T> f(T a){}的详解
  16. 汽车诊断协议:K线/CAN线、kwp2000、ISO14230、ISO1575、SAEJ1939
  17. Windows2003下运行JSP,环境配置教程(J2SDK+Tomcat5+IIS)
  18. 关于数字孪生的一点理解
  19. OpenGL之glut、glfw、glew、glad等库之间的关系
  20. 2022南京大学软件学院考研初试400分上岸经验贴

热门文章

  1. word表格美化技巧:如何统一改变表格的样式
  2. element表格样式修改
  3. 利用神经网络识别12306验证码—(六)模型应用以及12306实战测试
  4. 电子书格式转换 Epubor Ultimate 7 附注册机
  5. 使用 FireDAC的 TFDConnection, TFDQuery 最初只能显示50条记录,TDateSet.RecordCount总是获得50的解决方法。
  6. pdf转图片在线转换免费
  7. java 渲染_Java字体渲染
  8. teamviewer常用命令
  9. navicat导入.mdf文件到远程sqlserver数据库
  10. flashplayer Debug下载地址