数组的建立与运用

Java数组的理解与运用

1、什么是数组?

      数组是用来存放多个相同类型的变量的集合体。在内存中是连续存储的。

      可以理解为:定义了一个数组就相当于一次定义了相同类型的多个变量。

      如:int a[] ={5,6,7,8}; 就是一次定义了4个int型的变量,其值为:5,6,7,8。

2.什么是数组元素?

    构成数组的每一个变量就称为一个数组元素。通常通过数组下标来表示。

3.什么是数组下标?

      下标就是数组元素在数组中的位置。在一个数组中下标是从0开始,依次累加1到数组长度减1。特别注意不是从1开始而是从0开始的。

      如:int a[] ={5,6,7,8}; a[0]=5,a[1]=6,a[2]=7,  a[3]=8;

4.什么是数组长度?

      数组长度就是数组中元素的个数。

      数组长度也叫数组大小。

     获取数组长度的方法:数组名.length

     如:int a[] ={5,6,7,8}; 数组长度为:a.length =4。

     注意:数组长度是在为数组元素分配内存是就确定的大小,一旦确定就不可在改变。

5.一维数组使用

     数组使用分为四步:

    (1)定义数组

         数据类型 数组名 [ ];  或  数据类型 [ ]  数组名;

         例如 :int score[ ];     或  int [ ] score;

        语法解析:

          1.数组是什么数据的类型,数组元素就是就是什么数据类型。

          2.数组的特征是 [ ]。

          3.数组是引用类型。

                定义数组本质就是想JVM申请内存,JVM将内存分为方法区、堆、栈三部分,不同部分存储不同类型数据。定义数组时,JVM将数组名称存储在栈中,栈是一个先进后出的数据结构。数组内容则是存储在堆中的数组元素的首地址(用首地址代表存放数组元素的整块地址)。

       (2)为数组元素分配内存

            声明数组时仅指定了数组名称和元素的类型,并没有指定数组个数,也没有为数组元素分配内存,所以无法使用数组存储元素。想要系统为数组元素分配存储空间,就必须指出数组元素个数,并通过new运算符为数组元素分配空间。(通过new运算符分配的元素都存储在堆中)

            为数组元素分配内存空间语法格式:

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

                    例如:score = new int [5](score 数组中有int 型的5个数据)

                    注:(1)和(2)合并在一起写: int []score = new int [5];  此时数组长度已定为                       5,永不可改。

       (3)数组元素初始化

                    数组声明并为数组元素分配空间后,必须为数组元素初始化(赋值)后才能使用数组。如果没有为数组初始化,数组元素也有默认值如下表:

    一般通过数组下标为数组元素初始化。

            例如:

                score[0][=60;   

                score[1]=70;    ......

                score[4]=90;

                注:(1)、(2)、(3)也可以合在一起写: int [ ]score = new int[ ]{60,54,63,25};  或  int score[ ] =             new int[ ]{60,54,63,25};   或 int [ ]score ={60,54,63,25};  特别注意在这三个方式中[]里面皆不可再写长度。

   (4)使用数组:

        一般使用数组求最大值,最小值,平均值,求和以及排序和查找等。

        例如:创建一个成绩的数据,统计最大值,最小值,平均值,求和。

public static void main(String[] args) {

        Scanner s = new Scanner(System.in);

        int []score = new int[5];

        //成绩初始化

        for (int i = 0; i < score.length; i++) {

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

            score[i]= s.nextInt();

        }

        //求最高分,求最低分

        int max  = score[0];

        int min = score[0];

        for (int i = 1; i < score.length; i++) {

            if(max<score[i]){

                max = score[i];

            }

            if(min>score[i]){

                min = score[i];

            }

        }

        System.out.println("最高分为"+max);

        System.out.println("最低分为"+min);

        //总分

        int sum = 0;

        for (int i = 0; i < score.length; i++) {

            sum += score[i];

        }

        System.out.println("班级总分:"+sum);

        System.out.println("班级平均分"+sum/score.length);

    }

排序中常用冒泡、选择、插入排序等。

冒泡排序:


选择排序:

插入排序:

查找一般使用二分法:

注意:二分查找是先排序之后在查找。

排序:

查找:

结果:


数组的工具类Arrays:

1.判断两个数组是否相等:Arrays.equals()  

2.将数组转换成字符串:Arrays.toString()

结果:

3.对数组元素进行升序排序:Arrays.sort()

结果:


4.将数组所有元素赋值为相同的值:Arrays.fill(数组,值);

结果:

5.将数组赋值成一个长度为设定值的新数组:Arrays.copyOf(数组,长度)

结果:

6.查询元素在数组中的下标:Arrays.binarySearch(数组,查找值)

结果:

分析:

若找到了数据,则返回该数据的下标

若找不到数据,则返回负数,其值为该数据在数组中排序的位置

二维数组使用:

语法与一维数组类似

(1)定义数组

         数据类型 数组名 [ ][ ];  或  数据类型 [ ] [ ] 数组名;

         例如 :int score[ ][ ];     或  int [ ] [ ]score;

            [ ] [ ]表示二维,第一个[ ] 表示第一维,第二个[ ] 表示第二维。

       (2)为数组元素分配内存

            int score[ ][ ];

            score=new int[3][3];  //三行三列共九个数据

       (3)数组元素初始化

             int score[ ][ ]=new int[ ][ ]{{1,2,3},{4,5,6},{7,8,9}};或 

             int score[ ][ ]={{1,2,3},{4,5,6},{7,8,9}};

   (4)使用数组:

有三个班级,每个班级3名学生,计算班级总成绩:

结果:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 一、泛型方法 1、声明语法 传递方法的泛型参数:调用的时候传递泛型参数 变量.< 实际的泛型类型>方法名(); 方...
    海贼王日熊阅读 109评论 0 0
  • 本篇记录学习js时的一些收获,包含以下内容,在语法上有递进关系: 1、js循环遍历的技巧(label语句、for....
    bikaY阅读 103评论 0 0
  • 取并集 结果 取交集 结果 取差集 结果 数组对象 取交集 结果 取差集 最近,自己项目中有一些数组操作,涉及到一...
    三丝阅读 132评论 0 0
  • 数组(Array) 什么是数组 数组是最常见的一种数据结构,它是相同类型的用一个标识符封装到一起的基本类型数据序列...
    夜雨流云阅读 391评论 0 0
  • 一、一维数组 1.1数组的声明与创建 定义:数组是一种数据结构,它表示一组相同类型的数据。使用数组需要遵守“先声明...
    柚_稚阅读 846评论 2 0