数组的概念
数组概念:数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。
数组的定义
有三种格式
第一种>>> 注意 中括号放在哪里都是可以的 这两种都对
int []sources=new int[5];
int sources[]=new int[5];
第二种>>> 在定义的时候即可赋值
int []sources=new int[]{1,2,3,4,5};
int sources[]=new int[]{1,2,3,4,5};
第三种>>>
int []sources={1,2,3,4,5};
int sources[]={1,2,3,4,5};
注意 数组又定长特性,长度一旦指定,不可更改。
数组的访问
索引:每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号编号称为索引(index),可以
通过数组的索引访问到数组中的元素。 注意:格式为>>数组名[索引]
数组的长度属性:每个数组都具有长度,而且是固定的,java中赋予了数组的一个属性(lebgth),可以获取到数组
的长度,属性length是数组的长度,所以数组的最大索引值为>>数组名.length-1
数组原理内存图
内存概述
内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程
序是不会运行的,必须放进内存中才能运行,运行完毕后后清理内存。
java虚拟机要运行内需,必须要对内存进行空间的分配和管理。
Java虚拟机的内存划分
jvm的内存划分:
寄存器 >>> 给CPU使用,和我们开发无关
本地方法栈 >>> jvm在使用操作系统功能的时候使用,和我们开发无关
方法区 >>> 存储可以运行的class文件
堆内存 >>> 存储对象或者数组,new来创建的,都存储在堆内存中
方法栈 >>> 方法运行时使用的内存,比如main方法运行,进入方法栈中执行
数组获取最大元素
最大值获取:从数组的所有元素中找出最大值
实现思路:
定义变量,保存数组0索引上的元素
遍历数组,获取处数组中的每个元素
将遍历到的元素和保存数组0索引上值的变量进行比较
如果数组元素的值大于了变量的值,变量记录住新的值
数组循环遍历结束,遍历保存的就算数组中的最大值
public static void main(String[] args) {
int [] arr={5, 15, 2000, 10000, 100, 4000};
int max=arr[0];
for (int i = 1; i <arr.length ; i++) {
if(arr[i]>max){
max=arr[i];
}
}
}
数组反转
实现思路:实现反转,就是需要将数组最远端元素位置交换,定义两个变量,保存数组最小索引
和最大索引,两个索引上的元素交换位置,最小索引++,最大索引--,再次交换位置,最小索引
超过了最大索引,数组反转结束
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
for (int min = 0,max=arr.length-1; min <=max ; min++,max--) {
//利用第三方变量完成数组中元素的交换
int temp=arr[min];
arr[min]=arr[max];
arr[max]=temp;
//还有一种方法
//arr[min]=arr[max]+(arr[max]=arr[min])*0;
}
}
数组作为方法参数
数组作为方法传递参数值,传递的参数是数组内存的地址
总结:方法的参数为基本数据类型时,传递的是数据值,方法的参数为引用类型时,传递的是地址