**# 数组介绍
- 数组指的是一种容器,可以用来存储同种数据类型的多个值。
- 数组容器在存储数据的时候,需要结合隐式转换考虑。
- 下面写的都是一维数组,多维数组就是多个中括号即可。一般最常用的是二位数组,第一个括号代表行,第二个代表列。
数组的定义与静态初始化
数组的定义
格式1
//数据类型[] 数组名
//举例
int [] array;
格式2
//数据类型 数组名[]
//举例
int array[];
数组的静态初始化
- 初始化就是在内存中,为数组容器开辟空间,并将数据存入容器的过程。
- 数组的初始化分为:静态初始化和动态初始化。
数组的静态初始化
//数据类型[] 数组名字=new 数据类型[]{元素1,元素2,....};
//简写:数据类型[] 数组名={元素1,元素2,元素3...};
//举例
int[] arry=new int[]{1,2,3};
int[] arry={1,2,3,4};
注:
- 数组一初始化长度就固定不会发生变化了
数组的地址值和元素访问
数组的地址值
数组的地址值表示数组在整个内存中的位置。
可以System.out.println(数组名);
这样直接打印出数组的地址值。
数组地址值的格式:
-
[I@7ef20235
-
[表示当前是一个数组
-
I表示当前数组里面的元素都是Int类型的
-
@表示一个建个符号(固定格式而已)
-
7ef20235是数组的真正地址值(十六进制)
平时习惯把整体叫数组的地址值。
数组的元素访问
格式
//数组名[下标];
int a[]={1,2,3};
//a[0],a[1],a[2];就是数组的元素访问
数组元素都是从下标为0开始的
故在循环遍历中循环结束条件一般为 数组长度-1
数组长度-1是数组的最大下标~
数组遍历
int arry[]={1,2,3,4,5,6,7,8,9};
for(int i=1;i<arry.length;i++){
System.out.println(arry[i]);
}
这里是一个静态函数length
一般用来表示数组长度时使用的。
数组动态初始化
- 动态初始化:初始化时只指定数组的长度,由系统为数组分配初始值。
格式
//数据类型[] 数组名=new 数据类型[数组长度];
//举例
int[] arry=new int[3];
数组默认初始化的值规律
- 整数类型:默认值0
- 小数类型:默认值0.0
- 字符类型:默认值'/u000' 打印出来是空格
- 布尔类型:默认值false
- 引用数据类型:默认初始值null
动态初始化和静态初始化的区别:
- 动态初始化:手动指定数组的长度,由系统给出默认值.
- 静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度。
数组常见问题
-
数组越界:
当访问了数组中不存在的索引,就会引发索引越界异常。
就比如说我们给定数组长度为3,我们访问了a[4]这种情况就越发生数组越界。
数组常见操作
求最值
int min=99999;
int max=0;
int[] arry={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<arry.length;i++){
if(arry[i]>max){
max=arry[i];
}else{
min=arry[i];
}
}
遍历求和
int[] arry={1,2,3,4,5,6,7,8,9,10};
int sum=0;
for(int i=0;i<arry.length;i++){
sum+=arry[i];
}
数组内元素交换
int arry[]={1,2,3,4,5};
int tmp;
tmp=arry[4];
arry[4]=arry[0];
arry[0]=tmp;
数组内存图
java内存分配
jvm在计算机内存中分为五个区:
-
栈
方法运行时,使用的内存,比如说main方法,进入方法栈中执行。
-
堆
存储对象或数组,new来创建的,都存储在堆内存中。
只要是new出来的一定是在堆中开辟了一个小空间。
如果new了多次就会开辟多个。
-
方法区
存储可以运行的class文件
-
本地方法栈
JVM在使用操作系统功能的时候使用,与开发无关。
-
寄存器
给CPU使用,与开发无关。详细在汇编中有
注意:
在jdk8开始,取消了方法区,新增原空间。
把原来方法去的多种功能进行了拆分,有的功能放到了堆中,有的功能放到了元空间中。
俩个数组指向同一个内存空间
情况如下
int[] arr1={11,12};
int[] arr2=arr1;
//此时arr1和arr2共享同一个内存空间
//数组在定义时会在堆空间中开辟一个小空间来存储数组的数据
//而main方法在栈中,栈内数组的表现情况是 int[] arry1=数据的地址。
当俩个数组指向同一个小空间时,其中一个数组堆小空间的值发生了变化,那么其他数组再次访问时都是修改之后的变化了。
标签:初始化,java,--,元素,数据类型,int,数组,arry From: https://www.cnblogs.com/wdadwa/p/java_learning_07.html