Array
- java语言中数组是一种引用数据类型。不属于基本数据类型。数组的父类是object。
- 数组是一个容器,数组是一个数据的集合。
- 数组中可以储存基本数据类型的数据,也可以储存引用数据类型的数据。
- 数组是引用类型,所以数组对象储存在堆内存当中的。
- 数组当中储存的是Java对象的话,实际上存储的是对象的引用(内存地址),数组不能直接存储java对象。
- 数组一旦创建,在java中规定,长度是不可变的。
- 数组分类为一维数组二维数组,多维数组。
- 数组中所有的对象都有length属性,用来获取数组中元素的个数,
- Java中数组的数据类型都必须统一。
- 数组中第一个元素的内存地址就作为整个数组对象的内存地址。储存在栈内存中如21.
- 数组中的每一个元素都有下标,从0开始,递增。最后一个就是length-1.
- 数组的优点和缺点:
优点:查询、查找、检索某个下标上的元素的效率极高。
检索效率高的原因:
- 每一个元素的内存地址在空间存储上是连续的。
- 每一个元素类型相同,所以占用空间大小一样。
- 知道一个元素的内存地址,知道每个元素占用的空间大小,又知道下标,所以通过数学表达式就可以计算出某个元素的内存地址,直接通过内存地址定位元素,所以数组的检索效率是极高的。
缺点:
-
因为需要保证数组中每个元素的内存地址连续,在数组上随机删除或增加元素的时候,效率较低,因为随机增删会涉及其他元素的同意前移或后撤的操作。但是对于最后的一个元素的增删则不影响。
-
数组不能存储大数据量,因为在内存空间中很闹找到一块很大且连续的内存空间。
-
如何声明:
int[] array1;
double[] array2;
String[] array3;
Object[] array4;
- 如何初始化:包括静态初始化数组和动态初始化数组。
静态:
int[] array={10,20,30,11,58};
动态:
int[] array=new int(6); //这里6表示数组中的元素个数,且默认值都为0
String[] array=new String(8)//这里8表示数组元素个数,且默认都为null
c++风格:
int array[]={20,30,40,50};
- 什么时候使用静态,什么时候使用动态方式。
当确定数据内容时,用静态,当不确定时,用动态。
-
当一个方法的参数是数组,传参用的方法。
-
main方法中的(String[] args)数组的作用是JVM传一个参数;或者给用户使用,用户可以在控制台上输入参数,这个参数会被自动转换为“String[] args”数组。然后JVM通过空格将这些参数分离,然后自动放到“String[] args”中。
-
对于数组来说只存储java对象的内存地址,数组中存储的是每个元素是“引用”。
-
数组中存储的数据类型是引用数据类型。
-
一维数组的扩容:先创建一个大容量的数组,然后再将小数组中的数据拷贝进去。拷贝使用System.arraycopy(五个参数)
-
数组拷贝的内存图:
二维数组
- 二维数组是一个特殊的一维数组,特殊在数组中的元素都为一维数组。
- 二维数组的格式:int[][] array
int[][] array={{1,2,3},{4,5,6},{7,8,9,},{7,4,1}};
int[][] array={
,
,
}
- 二维数组的静态初始化:
int[][] array={{1,2,3},{4,5,6},{7,8,9,},{7,4,1}};
int[][] array={
,
,
- 二维数组的动态初始化:
int[][] a=new int[3][4];
- 二维数组的读和改:
int[][] array={
,
,
}
int[]=array[0] //{1,2,3}
array[二维数组中的一维数组下标][一维数组中的元素下标]
System.out.println(array[0][1]) //第一个一维数组的第二个元素。
- 二维数组的改:
array[2][0]=5;
二分法查找
- 二分法查找算法基于排序的基础之上(没有排序无法查找)
- 二分法效率高于一个一个查找。
- 二分法也叫折中查询。
冒泡排序
- 从左到右依次比较,若a>b则a与b互换位置。
- 例如:int[] arr={9.4.5.8.7.1.2};
{4,9,5,8,7,1,2};
{4,5,9,8,7,1,2}
{4,5,8,9,7,1,2}
{4,5,8,7,9,1,2}
{4,5,8,7,1,9,2}
{4,5,8,7,1,2,9}
最终经过6次比较输出最大的9
{4,5,8,7,1,2,}
{4,5,8,7,1,2,}
{4.5.7,8,1,2,}
{4,5,7,1,8,2,}
{4,5,7,1,2,8}
最终经过3次比较输出最大的9
{4,5,7,1,2}
{4,5,7,1,2}
{4,5,1,7,2,}
{4,5,1,2,7}
最终经过4次比较输出最大的7
{4,5,1,2,}
{4,1,5,2,}
{4,1,2,5,}
最终经过3次比较输出最大的5
{1,4,2}
{1,2,4}
最终经过2次比较输出最大的4
{1,2}
最终经过1次比较输出最大的2
- 代码:
int[] arr={5,7,8,9,8};
for(int i=0;i<arr.length-1;i++){
if(arr[i]<arr[i+1]){
int a;
a=arr[i];
arr[i]=arr[i+1];
arr[i+1]=a;
}
\1.
标签:Java,int,元素,数据类型,数组,array,内存地址 From: https://www.cnblogs.com/xiaoWang3486/p/17727874.html