快捷键:shift+f6  快速重命名

数组概念:数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。

只要不是那八个数据一般都是引用类型数据。

数组的初始化方式:

静态初始化:(指定长度)

动态初始化:(指定内容)

动态初始化

数据类型[] 数组名 = new数组存储的数据类型[长度];

int[] arr = new int[3];

静态初始化(标准格式)

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};

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

静态初始化(省略格式)

数据类型[] 数组名 = {元素1,元素2,元素3...};

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

注意事项:数组的长度一旦确定,在堆内存中了,运行过程中是不会发生改变。

使用建议:1.如果知道了数组的长度,但是里面的内容还不确定,那么尽量使用动态初始化指定长度;相反则使用静态初始化。


数组的访问:

直接打印数组的名称,得到的是一个16进制的地址值,(其实确切来说是一个地址哈希值)

每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引

(index),可以通过数组的索引访问到数组中的元素。数组名.length ,属性length的执行结果是数组的长度,int类型结果。由次可以推断出,数组的最大索引值为数组名.length-1 。

索引访问数组中的元素:

格式:

数组名[索引]=数值,为数组中的元素赋值:arr[0] = 6;

变量=数组名[索引],获取出数组中的元素:int i = arr[0];

System.out.println(i);

数组原理内存图:

1.      内存概述

Jvm不仅可以跨平台、翻译、还会在内部划分内存。

内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

2.      内存划分

寄存器(pc Register): 给CPU使用,和我们开发无关。

本地方法栈(Native Method Stack): JVM在使用操作系统功能的时候使用,和我们开发无关。

方法区(method Area)存储可以运行的class文件。

堆(Heap)内存存储对象或者数组,凡是new来创建的,都存储在堆内存。

方法栈(Stack)方法运行时使用的内存,比如main方法运行,进入方法栈(stack)中执行。

Java数组内存图

栈是一个管理数据、方法的空间    堆相当于一个“虚拟数据库”

5.数组_数据


Int[] arrybB=arrayA  :把A的地址赋给B了,地址一样,所以数据也会一样肥的

只要地址一样的数组,那就说明这两个数组一样,只是引用名不同。

所有引用类型数据都可以赋值一个NULl,除了基本数据类型。

1.       数组的常见操作

1.  数组越界异常(ArrayIndexOutOfBundsException):数组索引编号写错了

2.数组空指针异常(NullPointerException)忘了写new初始化了

数组遍历

1.  按照地址一个9一个输出

2.  可以用for循环遍历输出

3.  数组获取最大值:一个一个遍历比较,简称(比武招亲)

5.数组_数据类型_02


4.  数据反转

只是位置交换,不是排序,如下图所示,一个指针指开头,然后另一个指针指末尾,

然后交换数据,接下来前指针退一位,而末指针前进一位,直到两指针相撞结束。

5.数组_数据类型_03


如何进行两个变量的内容交换?    

举例:如果要两倍数,交换被子需要第三个空杯子。现在两个变量交换,就需要第三个变量。

什么时候停止交换?

(1)   个数为奇数时,min == max

(2)   个数为偶数时,所以需要考虑指针大小的变化当min<max时,继续进行交换,当min>max时,停止交换。

最后谨记

1.    方法的参数为基本类型时,传递的是数据值.

方法的参数为引用类型时,传递的是地址值.

2.任何数据类型都可以作为方法的参数

3.基本类型作为方法参数,那么传递进去的就是数据值;

如果是引用类型数据,那么传递进去的是【地址值】

4.任何数据类型都可以作为方法返回值,但方法组多只能一个。

5. 返回的是地址值:


扩展:

1.在公司里,一般都用双周快排的排序法。

2.如下:引号名名字变了,但是地址已经变了,就类似已经换家了。

5.数组_数据_04

1. 内存位置划分具有随机性,

表示数组不可变性。

4.为什么要从0开始?,

因为是计算机存储是按照字节码来进行位置分配的。

5. 

 

5.数组_数据_05

  


6.JIT编译器