定义
- 用来存储多个相同数据类型的集合(容器)。
数组的类别及表示方式
- 静态定义方式
-
数据类型【】 数组名 = {数值值};
-
数据类型 数组名 【】 = new 数据类型【】;
eg:
int【】 arr = {1,2,3,4,5};
String arr【】 = new String【】;
-
动态表示方式
数据类型 数组名 = new 数据类型【长度】;
eg:
String myName = new String【5】;
数组定义完后的默认值
byte、short、int、long:0;
float、double:0.0
char:\0
boolean:false
引用数据类型:null
数组定义需要注意事项
1. 数组中定义的值的数据类型必须保证相同
2. 数组的长度是固定的,不能改变
3. 数组的长度通过属性length控制,如 数组名.length
4. 数组中的元素在内存空间上是连续的
5. 数组中的元素是通过数组的下边来访问的,如 数组名【下标】
- 数组的下标不能超出范围,否则报错(ArrayIndexOutOfBoundsException
)
数组的遍历方式
- for循环遍历
- for (int i = 0; i < nameArr.length; i++) {
System.out.println(nameArr[i]);
}
- 增强for循环 foreach,循环次数由集合的元素个数决定
- for(int i : ageArr){
System.out.println(i);
}
- 函数遍历
- System.out.println(Arrays.toString(nameArr));
在数组中实现增删
在数组中插入一个元素
package zuoye;
public class Demo04 {
public static void main(String[] args) {
// 新增 2 seven
String [] nameArr = {"zhangsan","lisi","wangwu","zhaoliu",null,null};
for (int i=nameArr.length-1; i>=2 ; i--) {
if(nameArr[i] != null){
nameArr[i+1] = nameArr[i];
}
}
nameArr[2] = "seven";
for (String name : nameArr) {
System.out.println(name);
}
}
}
在数组中删除一个元素
数组空间未占满
public class Demo03 {
public static void main(String[] args) {
/*
* 删除 2
*
*
*/
String [] nameArr = {"zhangsan","lisi","wangwu","zhaoliu","tianqi"};
for (int i = 3; i < nameArr.length; i++) {
nameArr[i-1] = nameArr[i];
}
nameArr[nameArr.length-1] = null ;
for (String name : nameArr) {
System.out.println(name);
}
}
}
数组空间占满
扩容:
- 数组覆盖
package zuoye;
public class Demo03 {
public static void main(String[] args) {
// 扩容
String [] nameArr = {"zhangsan","lisi","wangwu","zhaoliu"};
String [] newArr = new String [8];
for(int i=0;i<nameArr.length;i++){
newArr[i] = nameArr[i];
}
nameArr = newArr ;
for (String name : nameArr) {
System.out.println(name);
}
}
}
- arraycopy函数
package zuoye;
public class Demo05 {
public static void main(String[] args) {
// 扩容
String [] nameArr = {"zhangsan","lisi","wangwu","zhaoliu"};
String [] newArr = new String [8];
System.arraycopy(nameArr,0, newArr, 0, nameArr.length);
nameArr = newArr ;
for (String name : nameArr) {
System.out.println(name);
}
}
}
- copyOf函数
package zuoye;
import java.util.Arrays;
public class Demo03 {
public static void main(String[] args) {
String [] nameArr = {"zhangsan","lisi","wangwu","zhaoliu"};
String [] newArr = Arrays.copyOf(nameArr, nameArr.length);
System.out.println(Arrays.toString(nameArr) );
}
}
补充
- copyOfRange函数
package zuoye;
import java.util.Arrays;
public class Demo03 {
public static void main(String[] args) {
int [] nameArr = {6,4,2,3,12,15,16};
int [] newArr = Arrays.copyOfRange(nameArr, 1, 3);//[1,3)
System.out.println(Arrays.toString(newArr) );
}
}
- Arrays.sort函数
package zuoye;
import java.util.Arrays;
public class Demo03 {
public static void main(String[] args) {
int [] nameArr = {6,4,2,3,12,15,16};
//排序
Arrays.sort(nameArr);
System.out.println(Arrays.toString(nameArr) );
}
}
冒泡排序
package com.bailiban.practice;
import java.util.Arrays;
public class practice_sort {
public static void main(String[] args) {
int[] numArr = {6,2,4,8,12,14};
for(int i = 1;i<numArr.length-1;i++){
if(numArr[i]>numArr[i-1]){
numArr[i-1] = numArr[i-1];
numArr[i] = numArr[i];
}
else{
int temp;
temp = numArr[i-1];
numArr[i-1] = numArr[i];
numArr[i] = temp;
}
}
System.out.println(Arrays.toString(numArr));
}
}