Java-数组

数组的概念

数组是一种数据结构,用来存储同一类型值的集合。通过一个整型下标可以访问数组中的每一个值。

数组的定义格式

声明数组变量时,需要指出数组类型和数组变量的名字 int[] a;
数组可以加泛型通过编译器,但是因为数组使用前必须进行初始化,必须知道数组实际类型,然而泛型 擦除会移除参数类型信息。

数组的初始化

动态初始化 只给长度,系统给出默认值。 int [] arr = new int [3];
在堆内存空间创建一个int类型数组,数组有三个元素,有一个唯一地址值
静态初始化 给出值,系统决定长度
int[] arr = new int[] {1,2,3}; int [] arr = {1,2,3};
数组在定义的时候必须进行初始化(静态初始化或者动态初始化)否则会报错。
int类型数组默认初始化值为0
String类型数组默认初始化值为null
boolean类型数组默认初始化值为false
double类型数组默认初始化值为0.0
快速创建数组:int[] a = {1,2,3};

for each循环

Java有一种功能很强的循环结构,可以用来依次处理数组中的每个元素 for(variable: collection) statement

数组拷贝

在Java中允许将一个数组变量拷贝给另一个数组变量。这时两个变量将引用同一个数组
int[] luckyNumbers = smallPrimes;
luckyNumbers[5] = 12 //smallPrimes[5] = 12
如果希望将一个数组的所有值拷贝到一个新的数字组中去,则要使用Arrays类的copyTo方法。
int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers.length);
第二个参数是新数组的长度。
增加数组的大小:
luckyNumbers =Arrays.copyOf(luckyNumbers,2 * luckyNumbers.length) ;
如果数组元素是数值型,那么多余的元素将被赋值为0,如果数组元素是布尔值,则为false,如果长度小于原始数组的长度,则只拷贝最前面的数据元素。

数组排序

Arrays.sort(数组);优化的快速排序算法
static String toString(type[] a):返回包含a中数据元素的字符串,这些数据元素被放在括号内,并用逗号分隔.
static type copyOf(type[]a,int length):
static type copyOf(type[] a,int start,int end):
返回与a类型相同的一个数组,其长度为length或者end-start,数组元素为a的值
拷贝的数据元素长度如果大于原数据元素长度,结果为0或false
static void sort(type[] a);
static int binarySearch(type[] a,type v):
static int binarySearch(type[] a,int start,int end,type v)
利用二分搜索算法查找值V,如果查找成功,则返回相应的下标值,否则,返回一个负数r
static void fill(type[]a,type v):将数组的所有数据元素值设置为v
static boolean equals(type[] a,type[] b):如果两个数组大小,下标相同的元素都对应相等,返回true.

Java的内存分配

存储局部变量
存储所有new出来的东西
方法区
本地方法区(系统相关)
寄存器(cpu使用)
栈内存和堆内存的区别
栈:数据使用完毕就消失
堆:每一个new出来的东西都有地址、每一个变量都有默认值,数据使用完毕后,在垃圾回收器空闲的时候回收
一个数组内存图
一个数组内存图
两个数组内存图
两个数组内存图
数组内存图
数组内存图

二维数组

二维数组是元素是一维数组的数组。
格式: 数据类型[] [] 数组名 = new 数组类型[m] [n];
数据类型[][] 数组名 = new 数组类型[m] [];
数据类型[] [] 数组名 = new 数组类型[] []{{…},{…},{…}};
数据类型[] [] 数组名 = {{…},{…},{…}};
二维数组的求和
在这里插入图片描述

数组常见操作

遍历
在这里插入图片描述
在这里插入图片描述
最值
最大值:在这里插入图片描述
最小值:在这里插入图片描述
逆序
在这里插入图片描述
查表
在这里插入图片描述
基本查找
在这里插入图片描述
在这里插入图片描述
杨辉三角
在这里插入图片描述
冒泡排序(bubble)

相邻位置比较,从小到大顺序,如果小就往前放,如果大就往后放
外层循环控制轮数
for(int i =0;i<a.length-1;j++)
内层循环控制:比大小,换位置
for(int j =0;j<a.length-1-i;j++)
在这里插入图片描述
内层循环控制一个数和几个数比
外层循环控制你内层循环循环几次,你比几次
i<a.length-1:循环a数组长度-1(元素个数的循环次数,最后一次可以不用比
j<a.length-1-i:循环a数组-1(下标数)-i(最后不用循环多次,次数在递减)
new Scanner(System.in).nextInt()
nextInt()方法有一个默认值,为10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值