2018-11-26 数组

数组的定义和创建

数组可以看成是多个相同类型数据的组合,实现对这些数据的统一管理
例如:


image.png

数组元素:数组中的每一个数据,称为数组的一个元素(element)

数组中的元素可以是任何数据类型,包括基本数据类型和引用类型

数组中元素的个数,称为数组的长度(length)
JAVA语言中声明数组时不能指定其长度
例如:
int a[5]; //非法
int a[]; //合法
int[] a; //合法
数组的声明:
数组类型 数组名 [ ] 或 数组类型[ ] 数组名
int a[ ] ;
int[ ] b ;
double d[ ] ;
char[ ] ch ;
String stu[ ] ;
指定数组长度:
数组名 = new 数据元素类型[ 元素个数 ]
数组长度一经定义,固定不变。
int a[ ] ;
a = new int[5];

int a[ ] = new int[5];

数组的内存模型

-数组是存储多个相同类型变量的对象。数组的-所有元素保存在堆内存中。
-创建一个数组就是在堆中创建一个数组对象。
-数组创建后立即拥有默认值。
-索引从0开始。
-连续分配

image.png

数组的初始化:

在创建数组的同时就为数组元素分配空间并赋值
数组类型 数组名[ ] = {元素1,元素2,…} 或 数组类型 数组名[ ] = new 数据类型[ ]{元素1,元素2,…}
数组元素的赋值
-Java中,数组元素的下标从0开始;
-元素的下标可以是整型常量或整型表达式;
-数组的查询效率高,可以通过下标进行对数组的定位检索。
数组名[元素下标] = 元素值;

创建数组:

声明数组:和使用变量要先声明一样,先声明数组的类型和名称


image.png

构造数组

image.png

foreach循环访问数组:

foreach循环:在JDK5以后版本中,增加的循环方式,是for循环的特殊简化版本。
语法为:
for(数组元素类型 变量名 : 数组名){
语句;
}

作用:

该循环方式为按照数组下标顺序,依次将冒号右边数组中的每个元素赋值给冒号左边的变量,数组长度为for循环的次数。
示例:
class Hello {
public static void main( String args[ ]) {
int a[] = {1,-12,33};
for(int i : a){
System.out.println(i);
}
}
}

数组长度

数组有length属性,用来显示本数组的长度,语法为:
数组名.length
特点:
数组的长度(length)必须>=0;
length为只读,不能被赋值。
利用length遍历数组
示例:

class Hello {
         public static void main( String args[ ]) {
                 int a[] = {1,-12,33};
                 for(int i=0;i<a.length;i++){
                     System.out.println(a[i]);
                  }
         }
}

一维数组 数组的异常

数组越界异常(ArrayIndexOutOfBoundsException )
多维数组的创建:
数组类型 数组名 [ ] [ ]
数组类型[ ] [ ] 数组名
数组类型[ ] 数组名 [ ]
多维数组的创建:
数组名 = new 数据元素类型[ 行数 ] [ 列数 ] ;
数组名 = new 数据元素类型[ 行数 ] [ ] ;
多维数组的初始化:
数组类型 数组名[ ][ ] = { {元素11,元素12,…} , {元素21,元素22,… } }
数组类型 数组名[ ][ ] = new 数据类型[ ][ ] { {元素11,元素12,…} , {元素21,… } }

一维数组应用

从键盘输入班级学员成绩,计算全班学员的平均分


image.png

image.png

image.png

冒泡排序法(Bubble Sort)

冒泡排序法是一种简单的排序算法

它重复地走访过要排序的数组,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数组的工作是重复地进行直到没有再需要交换,也就是说该数组已经排序完成。

 // 冒泡排序(下沉法)
 public static void bubbleSort(int[] a) {
                   for (int i = 1; i < a.length; i++) {
                         for (int j = 0; j < a.length - i ; j++) {
                                     if (a[j] > a[j + 1]) {
                                     int t = a[j];
                                     a[j] = a[j + 1];
                                     a[j + 1] = t;
                               }
                     }
           }
 }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 1,622评论 0 9
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,894评论 2 9
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,436评论 0 4
  • 老爸今天比我起的早 我起来时他已经泡茶喝了 大概是因为昨天晚上小外甥跟珍姐来了 早早起来去架锅炉去了 怕冷 昨晚的...
    小山松柏阅读 120评论 0 0
  • 人海,唯有驻足霎那 永恒,不过是畅谈后的信任与陪伴 匆匆而过 门前苦苦等过 过客,抉择 轰烈的青春 逃不掉匆匆而过...
    皮卡丘皮W阅读 227评论 0 1