数组的定义方式:
1. int[] x = new int[3];
2. int[] arr = new int[] {2,3,6,7,1};
或者 int[]arr = {2,3,6,7,1}; 堆内存会开辟空间
--------------------------------------------------------------------------------
java五块内存区域
--------------------------------------------------------------------------------
栈内存
----------------------------------------------
堆内存
new出来的实体都放在堆里面
堆内存每一个实体都有一个内存地址值,因此,栈内存只是引用地址值指向该数据
堆内存中的实体如果不赋值,都有默认的值
当x=null时
栈中的x就不指向堆内存了,java会启动垃圾回收机制,将堆内存的开辟的空间清除(不一定马上清除)
堆内存的三个特点:
内存地址值
默认初始化值
内存回收机制
----------------------------------------------------------------------------------
打印数组
注:直接输数组名,将打印数组的地址
要打印数组的元素,通过遍历
----------------------------------------------------------------------------------
数组类型的参数 (int[] arr)
----------------------------------------------------------------------------------
数组的排序
方法一:选择排序
内循环遍历一次,最值出现在头角标的位置上
以arr[0]为基础,把arr[0]和arr[1],arr[2],arr[3]....作比较,比完后,arr[0]即为最值;
然后以arr[1]为基础,把arr[1]和arr[2],3.....比较
每比完一遍。都会得到数字中得最大值或最小值
方法二:冒泡排序
相邻两个元素比较,大的往后排,比完一遍后,最大值排在了最后面;
然后最后面的那个最大值不用参与比较了,开始第二遍循环
注:面试常问到排序,冒泡,选择.....插入排序,快速排序,希尔排序。。
java自带排序(数组)
import java.util.*;
Arrays.sort(arr);
---------------------------------------------------------------------
数组查找:
1.折半查找:
前提,数组必须是有序数组
--------------------------------------------------------------------------------------------------
二维数组:
int [] [] arr = new int [3] [4];
int [] [] arr2 =new int [3] [ ];此时arr2[1] [0]的值为空,因为二维数组里的一维数组未被初始化,默认为null
赋值后,栈内存中并没有在一维数组后开辟空间,而是新建空间,将地址赋给一维数组
-----------------------------------------------------------------------------
定义方式二:
int [] [] arr = { {2, 3, 1, 5}, {9, 4, 2, 6}, {5, 3, 2, 7} };
二维数组 所有元素的和
-------------------------------------------------------
int[] x, y[]; 以此种方式定义的数组,x是一维数组,y是二维数组。(...不推荐)