数组
数组定义:数组是相同数据类型按一定顺序排列的集合。
数组数据类型:数组属于引用类型,同时数组创建后大小不可更改
数组定义语法:
先声明再赋值 int[] ns(int[] ns = null;); ns = new int[5]; 声明并赋 int[] ns = new int[5]; 声明并赋值*繁 int[] ns = new int[]{1,2,3}; 声明并赋值*简 int[] ns ={1,2,3};(简版声明和赋值必须在同一行)
数组语法含义:
int[] array = new int[10];
等号左边 | 等号右边 |
int: 告知编译器,创建int类型数据,有且只能储存int类型数据 |
new: new需要再计算机堆区申请连续内存空间 【将申请到的空间内数据全部清空】 |
[]: 告知编译器,当前创建数据类型为数组类型 告知编译器,数组名array是引用类型数据 |
int: 前后呼应,告知编译器这是int类型数据 |
array: 1.定义数组名,也是操作数组的核心数据,变量名 2.数组名array是引用类型数据 |
[10]: 告知编译器,数组容量capacity是10 |
数组元素的访问:
数组中的元素可以通过下标来访问。下标从0开始,到【数组长度-1】结束。数组访问修改:
arr[0]获取数组第一个元素
arr[3]获取第四个元素
数组作为参数进行传递格式:
//数组作为参数进行传递格式: //方法调用时仅仅在方法中调用数组名即可 // 方法定义时需完整定义:int[] arr class Demo5 { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9}; reverse(arr); } public static void reverse(int[] arr) { }
数据引用传递:
基本数据类型
基本数据类型中储存的为值,传递给其他对象后,不会影响本身的变化,相当与副本操作
引用数据类型
引用数据类型中储存的为地址,传递给其他对象后,会影响本身变化,相当与共享原对象的操作权限
???数组类型返回值public static int[] calu(int[] arr){...return arr}
数组常用方法:
for(i=0;i<ns.length;i++){}
for(元素类型 元素变量:遍历对象){ 执行的代码 }
快速打印数组内容: System.out.println(Arrays.toString(ns))
System.arraycopy(原数组,起始位置,新数组,新数组起始位置,原数组元素复制个数);
java.util.Array.copyOf(原数组,新数组长度);
数组异常:
数组取值范围:0~(length-1)
数组下表越界会产生:java.lang.ArrayIndexOutOfBoundryException
Int[] data = null;
System.out.println(data[0])
异常:java.lang.NullPointerException 调用未开辟空间的数组会发生空指向异常;
数组默认值:
整数:0
小数:0.0
字符:u0000
boolean:flase
引用类型:null
可变长参数:
使用方法类似数组:(数组类型…形参名)需放置最后
public static void main(String[] args) { print("hello","java","comeon");//此处可随意更改参数数量,print("hello");也可运行 } public static void print(String ...string) { for(String temp:string) { System.out.println(temp); }
}
二维数组
声明赋值方式 具体声明赋值方法
先声明、再分配 数据类型[][] 数组名; 数组名 = new 数据类型[高维长度][低维长度];
声明并分配空间 数据类型[][] 数组名 = new 数据类型[高维长度][低维长度];
声明并赋值(繁) 数据类型[][] 数组名 = new 数据类型[高维长度][] //不规则数组,自行new低维数组
声明并赋值(简) 数据类型[] 数组名 = {{v1,v2,v3},{v4,v5},{v6}}; //显示初始化
int[][] douarr=new int[2][]; douarr[0]=new int[] {4,5}; douarr[1]=new int[] {1,2,3};
数组其他知识点:
寻址时,可设置初始位置index为-1
【有new时,一定会哟用到堆区空间/计算机原理-小端字节序,大端字节序】
数组与对象差异:数组中的堆内存保存的是一组信息,对象中堆内存保存的是对象的属性
语法层面:硬性要求
《Java语言规范》:规定了什么,就能用什么。没有规定的,绝不能用。
《Java虚拟机规范》:规定了怎么用,就支持怎么用,没有规定的,随便用。(支持自我创造)
数组练习题
1.数组插入数值
2.杨辉三角
3.在数组中返回所有目标值的下标
4.选择排序
5.冒泡排序
6.数组逆序
更新履历:
0425:初步汇总完成
0426:增加数组调用规范
0426:增加练习题