-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
一、数组的概述
1、数组的概念
(1)数组:
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
(2)特点:
每一个元素都有编号,从0开始,最大编号是长度-1。
编号的专业叫法:索引
2、数组的定义格式
(1):数据类型[] 数组名; int[] arr ;
(2):数据类型 数组名[];
注释:推荐是用A方式,B方法就忘了吧。
但是要能看懂
(3)数组的初始化
Java中的数组必须先初始化,然后才能使用。
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
A:动态初始化
a:初始化时只指定数组长度,由系统为数组分配初始值。
b:格式:数据类型[] 数组名 = new 数据类型[数组长度];
c:举例:int[] arr = new int[3];
B:静态初始化
a:初始化时指定每个数组元素的初始值,由系统决定数组长度
b:格式: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
c:举例:int[] arr = new int[]{1,2,3};
d:简化版:int[] arr = {1,2,3};
二、Java的内存分配
1、概述
Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,
就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
2、
A:栈 存储局部变量
B:堆 存储所有new出来的
C:方法区(面向对象部分详细讲解)
D:本地方法区(系统相关)
E:寄存器(CPU使用)
注意:
a:局部变量 在方法定义中或者方法声明上定义的变量。
b:栈内存和堆内存的区别
栈:数据使用完毕,就消失。
堆:每一个new出来的东西都有地址,每一个变量都有默认值
byte,short,int,long-- 0
float,double --0.0
char --'\u0000'
boolean --false
引用类型 --null
数据使用完毕后,在垃圾回收器空闲的时候回收。
三、数组的常见操作
1、数组遍历
依次输出数组中的每一个元素
2、数组获取最值
获取数组中的最大值最小值
3、数组元素逆序
就是把元素对调
4、 数组查表法
根据键盘录入索引,查找对应星期
5、数组元素查找
查找指定元素第一次在数组中出现的索引
6、数组排序和二分查找
排序分为:
选择排序
冒泡排序
7、下面就是自己做的选择排序和冒泡排序的例子.
1、选择排序法
2、冒泡排序法
四、二维数的定义格式
1、格式1
(1)数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
(2)举例:
int[][] arr = new int[3][2];
2、格式2
(1)数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组
这一次没有直接给出一维数组的元素个数,可以动态的给出。
(2)举例:
int[][] arr = new int[3][];
3、格式3
(1)数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
(2)简化版格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
(3)举例:
int[][] arr = {{1,2,3},{4,5},{6}};
4、二维数组遍历
外循环控制的是二维数组的长度,其实就是一维数组的个数。
内循环控制的是一维数组的长度。
5、实例演示二维数组遍历
1、格式1
(1)数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
(2)举例:
int[][] arr = new int[3][2];
2、格式2
(1)数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组
这一次没有直接给出一维数组的元素个数,可以动态的给出。
(2)举例:
int[][] arr = new int[3][];
3、格式3
(1)数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
(2)简化版格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
(3)举例:
int[][] arr = {{1,2,3},{4,5},{6}};
4、二维数组遍历
外循环控制的是二维数组的长度,其实就是一维数组的个数。
内循环控制的是一维数组的长度。
5、实例演示二维数组遍历