java数组_1


数组的概念

数组(Array)是相同数据类型的数据的有序集合。

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

数组是引用数据类型。

数组的三个特点

[1]数组长度是确定。数组一旦申请完空间,长度不能发生变化,用length属性访问。

[2]数组的元素都是同一数据类型。

[3]数组是有序的。每个元素通过下标/索引标记,索引从0开始。

内存分为两类:

栈(stack)内存:基本数据类型分配在栈内存,栈内存空间不需要开发者回收,系统会自动回收。栈空间占整个内存空间的比例较小。

 堆(heap)内存:引用数据类型分配在堆内存,堆内存一定要开发者通过new 来申请,开发者申请的内存使用完成后一定要回收。jvm中有专门的垃圾回收机制(gc)回收使用完的堆内存。堆空间占整个内存空间的比例较大。

数组的声明

声明数组有两种方式

数据类型[ ] 变量   //int[ ] arr;  

数据类型 变量[ ]   //int arr[ ];

案例:声明一个数组申请空间并赋值

public class Test01{

    publicstatic void main(String[] args){

       //声明一个数组

       //int arr[];


       inta;


       //【1】声明数组变量

       int[]arr;


       //【2】给数组变量分配空间

       //给arr申请了5个连续的整形的int空间。

       arr= new int[5];


       //【3】给每个空间赋值

       arr[0]= 10;

       arr[1]= 20;

       arr[2]= 30;

       arr[3]= 40;

       arr[4]= 50; 

      //【4】访问元素

       System.out.println(arr[0]);

       System.out.println(arr[1]);

       System.out.println(arr[2]);


       //System.out.println(arr[5]);

    }

}

数组声明的其他方式

简写的方式:数据类型[ ] 变量 = new 数据类型[ ]{值1,值2,…};

//jvm根据后面值的个数申请空间并把值赋值到对应空间。

案例:

public class Test02{

    publicstatic void main(String[] args){


       //【1】数组的声明方式


       int[]arr = new int[5];

       arr[0]= 10;

       arr[1]= 20;

       System.out.println(arr);


       //【2】值声明

       int[]arr2;

       arr2= new int[]{10,20,30,40,50};


       //int[] arr2 = new int[]{10,20,30,40,50};

       System.out.println(arr2.length);


       System.out.println(arr2[0]);

       System.out.println(arr2[4]);



       //【3】数组的字面量声明

       int[]arr3 = {10,20,30,40};//字面量声明不支持分开赋值

       /*

       int[]arr3;

       arr3= {10,20,30,40};

       */

       System.out.println(arr3.length);

       System.out.println(arr3[0]);

       System.out.println(arr3[3]);



    }

}

数组的内存空间



数组的遍历

public class Test03{

    publicstatic void main(String[] args){


       int[]arr = {10,20,30,40,50};

       //0-4

       for(inti=0;i < arr.length;i++){

           System.out.println("arr["+ i + "]" + "=" + arr[i]);

       }

    }

}

需求:从控制台输入5个学生的成绩,并求平均分.

import java.util.Scanner;

public class Test04{

    publicstatic void main(String[] args){


       float[]arr = new float[5];

       Scannersc = new Scanner(System.in);


       floatsum = 0.0f;

       for(inti=0;i

           System.out.println("请输入第"+(i+1)+"位学生成绩:");

           arr[i]= sc.nextFloat();

           sum+= arr[i];

       }

       floatavg = sum / arr.length;

       System.out.println("平均分:"+avg);

    }

}

数组的常用算法

1.插入算法

一个数组有序,添加一个元素后,数组依然有序。

public class Test07{

    publicstatic void main(String[] args){


       //一个有序的数组,向该数组中添加一个元素,数组依然有序。

       int[]arr = {1,3,7,9,12,20,0};

       intt = 0;


       //【1】找位置

       intloc = -1; //表示t应该添加到的位置

       for(inti = 0;i

           if(arr[i]>= t){

              loc= i;

              break;

           }

       }


       System.out.println("loc= "+loc);


       if(loc< 0){ //没找到合适的位置

           arr[arr.length-1]= t;

       }else{

           //【2】依次后移

           for(intj=arr.length-1;j>loc;j--){

              arr[j]= arr[j-1];

           }

           //【3】添加插入的值

           arr[loc]= t;

       }


       //验证

       for(inti = 0;i

           System.out.print(arr[i]+"\t");

       }

    }

}

2.删除算法

一个有序的数组,删除一个元素后依然有序。

public class Test08{

    publicstatic void main(String[] args){


       //删除算法

       int[]arr = {1,3,7,9,12,20};

       intt = 1;


       //【1】找位置

       intloc = -1;

       for(inti=0;i

           if(t== arr[i]){

              loc= i;

              break;

           }

       }


       //【2】移动元素

       if(loc< 0){

           System.out.println(t+"在数组中不存在");

       }else{

           for(intj = loc;j

              arr[j]= arr[j+1];

           }


           //【3】最后一个元素置0

           arr[arr.length-1]= 0;

       }


       //验证

       for(inti = 0;i

           System.out.print(arr[i]+"\t");

       }


    }

}

3.冒泡算法

对一个无序的数组进行有序排序

public classTest10{

    public static void main(String[] args){

       //对一个无序的数组进行排序

       int[] arr = {10,5,3,4,2,9,7};


       int tmp = 0;

       for(int i=0;i


           for(int j=0;j


              if(arr[j]>arr[j+1]){

                  tmp = arr[j];

                  arr[j] = arr[j+1];

                  arr[j+1] = tmp;

              }

           }

       }


       for(int i=0;i

           System.out.print(arr[i]+"\t");

       }


    }

}

解题思路


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 1,692评论 0 9
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 3,406评论 0 9
  • 数组的概念: 数组是一个容器,存放一组相同数据类型变量的容器 数组的格式: 数据类型[] 数组名; Java写法 ...
    i_4178阅读 548评论 0 0
  • 也算成长了,不管爱不爱了!至少曾经爱过,真的很讨厌自己,但又不得不接受自己,生活就是这样,不管经历多少风雨,也应当...
    小牧wind阅读 136评论 0 0
  • 2019年3月4日 星期一sunny。 事件描述:今天早上,七点十分,我喊儿子起床,但儿子还没睡够,等到老公起来...
    亲亲九儿阅读 191评论 0 1

友情链接更多精彩内容