数组
概念:按照一定顺序排列的数据结构。
PS: 数组是为了解决变量的数据结构的缺陷,它可以存储多个同种类型的数据。
数组的语法结构:
数据类型[ ] 数组名 = {元素1,元素2, . . .}
创建数组的两种方式:
- 静态创建:创建数组的同时,直接给数组元素赋值
- 动态创建
注意的关键点如下:
int [ ] arr2;//没有开辟存储空间
arr2 = {1,2,3};//这两行会报错(期末考试必考题)
创建数组:
- 静态创建
package day09;
import java.util.Arrays;
public class arr_Demo01 {
public static void main(String[] args) {
int[] arr1 = {1,2,3,4,5} ;//创建数组
System.out.println(arr1);//输出的是数组的地址值 }
}
- 动态创建数组:
数据类型 [ ] 数组名 = new 数据类型[数组长度];
int [] arr2 = new int[5];
当
int [] arr3;
如何动态创建数组呢?
如下:
方式1:
int [] arr3;
arr3 = new int []{1,2,3,4};
方式2:
int [] arr3;
arr3 = new int[4];
但是:
注意的关键点如下:
int [ ] arr2;//没有开辟存储空间
arr2 = {1,2,3};//这两行会报错(期末考试必考题)
PS:后面只表示相关代码,没有把能运行的java文件直接写上来 大家可以自行把下面的代码直接代入到静态创建数组的倒数第三行就行了。
访问数组里面的元素——通过数组下标
&
获得数组长度
System.out.println(arr1[4]);//根据前面的数组得出5
System.out.println(arr1.length);//当前数组的长度
arr1[arr1.length-1]=10;//对最后元素重新赋值
输出数组的所有元素的方法
for(int i = 0;i<arr2.length;i++){
arr2[i] = 2* i +1;
}
System.out.println(Arrays.toString(arr2));
这里新建一个java文件吧
数组元素的复制
&
数组的复制
在复制前我们先做一些准备工作:
package day09;
import java.util.Arrays;
public class Demo02 {
public static void main(String[] args) {
int [] arr1 = {1,2,3,4};
}
}
接下来的代码只需要加入以上的代码中
大家可以先思考以下的代码,是不是也形成了一种完全复制呢?
int [] arr2 = arr1;
System.out.println(arr1);
System.out.println(arr2);//输出的结果说明两者所指向的地址相同
//所以我们进行接下来的操作就是
arr1[0] = 5;
System.out.println(Arrays.toString(arr2));//你会发现arr2的结果也变了
原因:
数组元素的复制
int [] arr3 = new int[6];
//(0,0,5,2,3,4)
//这是我想从arr1中复制后的数组元素放在arr3中
//源数组 初始位置 目标数组
Systems.out.println(arr1, 0, arr3,
2 , 4);
//目标数组的起始位置 复制的长度
Systems.out.println(Arrays.toString(arr3));
数组的复制
int [] arr4 = Arrays.copysOf(arr1,arr1.length);
Systems.out.println(Arrays.toString(arr4));
PS:关于这里的Arrays.copysOf()用不了的原因是需要
重新配置,1.5的jre已经不能满足我们使用啦
我们需要配置成的结果如图:
PS:由于我这里已经安装好了 但是步骤是一样的
供大家参考
点击JRE->鼠标右键->Bulid Path->Configure Bulid Path
点击 Add Library
选择 JRE System Library 然后点击next
点击 add
先点击 Standard VM ->Next
完成添加后 勾选你的jdk
然后点击OK
这里选择 你的jdk版本
点击 Finish
会出现类似以下的界面
把1.5的jdk删掉 防止你自己版本的jdk用不了
点击OK 即可
配置完成后就可以用Arrays.copysOf()这个啦
那么如何删除数组的最后一个元素呢?
往下看
首先我们先静态创建一个数组:{1,2,3,4,5}
int [] arr = {1,2,3,4,5};
如果我们把数组的长度缩短一个呢
如下
arr = Arrays.copyof(arr, arr.length-1);
System.out.println(Arrays.tostring(arr));//输出一下看下效果
结果:
成功!
那如果创建完数组后,直接给arr.length赋值为元素个数-1呢?
arr.length = 4;//直接报错了
//报错原因;length属性是final来修饰的,不能被更改
对于数组 arr={1,2,3,4,5} 变成 arr={1,5,3,4}
即 如何删除数组中的元素。
|
/
直接把2和5换位置
不如
直接把2的位置赋值为5就好了
arr[1] = arr[arr.length-1];
arr = Arrays.copyof(arr,arr.length-1);
System.out.println(Arrays.toString(arr));
三种排序方法:冒泡排序、插入排序、*快速排序
int [] arr1 = {12,1,23,10,9,5,2,7};
Arrays.sort(arr1);//快速排序方法
System.out.println(Arrays.toString(arr1));
完整程序代码:
package day11;
import java.util.Arrays;
public class Deom01 {
/**
* 静态方式创建一个数组,{1,2,3,4,5}
* 删除数组的最后一个元素,{1,2,3,4}
* 删除数组中的元素
*/
public static void main(String[] args) {
int [] arr = {1,2,3,4,5};
arr = Arrays.copyOf(arr, arr.length-1);
System.out.println(Arrays.toString(arr));
// arr.length = 4;length属性用final来修饰的,不能被更改
arr[1] = arr[arr.length-1];
arr = Arrays.copyOf(arr, arr.length-1);
System.out.println(Arrays.toString(arr));
//三种排序方法:冒泡排序、插入排序、*快速排序
int [] arr1 = {12,1,23,10,9,5,2,7};
Arrays.sort(arr1);//快速排序方法
System.out.println(Arrays.toString(arr1));
}
}
有什么问题欢迎评论~