5.数组

数组的概述

[是啥]数组:用来存储一组相同类型数据的数据结构,数组变量名属于引用类型数据

[存啥]数组中的元素可以是指定的任何一种数据类型(基本类型和引用类型)

[咋用]数组的每个元素对应一个索引(下标),可以通过索引访问数组中的元素

[变与不变]数组被创建好之后,它的长度不能改变,但是数组中的各个元素的值可以被改变

数组注意事项

数组4要素

标识符:即数组名称,用来区分不同的数组

数组元素:数组中存放的数据

元素下标:数组中每个数据的编号,从0开始,用于访问某个具体的元素

元素类型:声明数组时指定的数据类型

2个注意点

数组中元素类型必须相同

数组一旦创建,长度不可改变

数组的声明方式

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

数组元素的访问

数组在声明,创建(内存中为之分配空间)后,就可以访问数组中的每个元素

单个元素:arrayName[index]

index 为数组元素下标(索引),可以是整型常量或整型表达式。如a[3],  b[i],  c[6*i]

遍历访问:循环访问每个元素

普通循环

增强for循环

数组的length属性可以获取它的长度,例如:arr.length

索引值从0开始,且必须小于数组的长度,即0~n-1,否则发生数组越界异常

常用的排序算法

冒泡排序

选择排序


一数组

1数组的声明、创建

//格式:类型[]数组名

//声明了一个整型(int)数组,数组中的每个元素类型为int

int[]a;

//创建了一个数组对象,数组中包含10个元素

a=newint[10];

2数组的下标

下标从0开始,下标范围0 ~ n-1

//通过下标访问数组中相应的元素

a[0] = 12;

a[1] = 23;

a[9] = 20;

3数组的初始化

静态初始化

//大括号中有几个值,创建的数组中就有几个元素

int[]a= {1, 2, 3, 4};

int[]b=newint[]{2, 3, 4, 5, 6};

动态初始化

int[]d=newint[5];

4数组的遍历

1)for遍历

for(inti= 0;i< 4;i++){

System.out.println(a[i]);

}

2)增强的for遍历

for(intv:a){

System.out.println(v);

}

5数组的内存结构(重点)

栈先进后出的数据结构

方法的局部变量存放在栈里,当方法结束时,局部变量所占内存被系统回收

绝大多数对象存放在堆里

二数组排序

1选择排序

针对待排序的元素,使用首元素与剩余的元素依次进行比较,将最大值或最小值放在首位置。依次类推,直到所有待排序元素比较完毕。

5个数,比较4轮

n个数比较,比较n-1轮

轮数i    1  2  3  4

数据比较次数j   4  3  2  1     5 - i

Int[] a

a[0]和a[1]…a[4]

a[1]和a[2]…a[4]

a[2]和a[3] a[4]

a[3]和a[4]

2冒泡排序

针对待排序的元素,相邻的两个元素依次进行比较,将最大值或最小值放在最后

n个元素,比较n-1轮

轮数i    0  1  2  3

次数j    4  3  2  1,j  =  5–1–i

int[] a;

a[0]和a[1] ,  a[1]和a[2] ,  a[2]和a[3] ,  a[3]和a[4]

a[0]和a[1] ,  a[1]和a[2] ,  a[2]和a[3]

a[0]和a[1] ,  a[1]和a[2]

a[0]和a[1]

三Arrays类

Java提供的工具类

//默认升序

Arrays.sort(a);

//讲数组内容转换为字符串形式

Stringstr= Arrays.toString(a);

//二分查找

//第一个参数,待查找的数组,第二个参数,要查找的值

intindex= Arrays.binarySearch(a, 23);

四二维数组(了解)

存放数组的数组,数组中的元素为一个数组

int[][]arr=newint[2][3];

//数组中有两个元素,每个元素存放另外一个一维数组的地址

int[][]arr1=newint[2][];

arr1[0] =newint[3];

arr1[1] =newint[2];

//二维数组的静态初始化

int[][]arr2= {{1, 2}, {3, 4}, {5}};

//二维数组的遍历

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

for(int j= 0; j<arr2[ i ].lenght;j++){

System.out.print(arr2[i][j]);

}

System.out.println();

}

五可变参数

//可变参数, 类型...参数名称

staticvoidadd(int...args){

//方法内部当做数组处理

intsum= 0;

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

sum+=args[i];

}

System.out.println(sum);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 4,024评论 2 13
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,779评论 0 33
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,481评论 3 44
  • 网上盛传四度蝉联胡润全球富豪榜的湖北首富~九州通集团董事长刘宝林坐地铁出行,等候上车,看站牌,与百姓同排,低头玩手...
    四哥说事阅读 10,561评论 18 11
  • 每个看起来的坚强 背后都有难言的伤
    哈希算法阅读 211评论 0 0