目录
前言
这篇文章,我们来学习数组的使用,应该注意什么等等
一. 数组的基本概念
**,数组是一块 连续存储相同类型数据的 内存
1.1 如何定义数组?(方法)
- int [ ] arr ={1,2,3,4};
- int [ ] arr1 = new int [ ]{1,2,3,4} // 1 的简写
其中。new 是关键字 用来实例化对象(new 对象):数组就是对象(java中一切都是对象)
注:int [ ] arr2 = new int [10] //未初始化,只分配了空间,全面全都是0(因为默认初始化了)
数组变量 arr (又叫引用变量) 当中存的是地址
int [] arr =null ; //输出null
1.2如何访问数组?
例如:int [ ]arr ={1,2,3,4}
访问:(数组名+下标)
arr [0] ; //1
arr [1] ;//2
arr [2] ;//3
数组的长度,,直接用:数组名+ . +length 如:arr.length
二. 数组的初始化
初始化主要分为动态初始化 和 静态初始化
1.1动态初始化
在创建数组时,直接指定数组中的元素个数
如:int [ ] arr2 = new int [10]
2,静态初始化:
在创建数组是不直接指定数组元素,而是直接将具体的数据内容进行指定
如: int [ ] arr ={1,2,3,4};
三.数组的使用
数组在内存中是连续的,且编号都是从0 开始上升,作为下标进行访问
例如下面 对数组的遍历中 , 通过循环,根据下标对数组访问
方法1: public static void main(String[] args) { int [ ]arr ={1,2,3,4,5}; for (int i = 0;i<arr.length;i++){ System.out.print(arr[i]); } }
方法2:
public static void main(String[] args) { int [ ]arr ={1,2,3,4,5}; for (int x :arr){ System.out.print(x+" "); } }
在方法一中;for循环遍历数组的时候,有下标 //求长度用.length
在方法二中,for-each 没有 //求长度,加个计数器count=0;
四. 数组的问题
1:-------------------------- int [ ] arr={1,2,3}; int [ ] arr1=arr; //arr1 这个引用 指向了 arr这个引用 所指向的对象 //就是两个地址指向相同
2=================================== int [ ] arr3=null; //当前引用 不指向任何对象
一个引用 能同时指向多个对象吗? 不能
对象 能指向 对象 吗/ ? 不能,只有引用才能指向对象
五.数组的应用场景
1数组通过参数值进行传递
数组传的是地址,形参改变,实参也会改变,注意地址相同的情况下
2.数组通过返回值进行传递
3.1数组转字符串
int [ ] arr={1,2,3,4,5}; String arr1 = Arrays.toString(arr); System.out.println(arr1);
这是Java提供的 import java.util.Arrays 包,其中包含了一些操作数组的常用方法
4.1数组求平均值
public static void main(String[] args) { int []arr={1,2,3,4}; System.out.println(avg(arr)); } public static double avg (int []arr){ int sum = 0; for(int x:arr){ sum+=x; } return (double) sum/(double) arr.length; }
4.2数组首尾倒置
public static void reserve(int [] age) { if (age == null){ return; } int i = 0; int j = age.length-1; while (i<j){ int temp = age[j]; age[j] = age[i]; age[i]=temp; i++; j--; } }
4.3数组冒泡
public static void bubbSort(int [ ]arry){ for (int i = 0;i< arry.length-1;i++){ boolean flag =false; for (int j=0;j<arry.length-1-i;j++){ if(arry[j]>arry[j+1]){ int temp = arry[j]; arry[j]= arry[j+1]; arry[j+1]= temp; flag = true; } } if(!flag){ return; } } }