
定义:相同类型的数据统一聚拢在一起,他就是数组
数组可以存放多个同一类型的数据,数组也是一种数据类型,是引用类型。
【定义】:
定义:
int[] nums;
初始化:
nums = new int[3];
赋值:
nums[0] = 1;
nums[1] = 2;
nums[3] = 3;
//直接定义并初始化
int[] nums = {1,2,3};
//also
int[] nums = new int[5];
int[] nums = new int[]{1,2,3,4,5};
//数组属性,可获得数组长度
nums.length
数据结构层面:
第一步,在栈中定义一个变量nums,指针指向变量数组在堆中第一为的地址
第二部,在堆中开辟一块连续的空间,并加上默认值(初始化)
第三步,使用下标赋值
问题:
初始化后会有默认值 0
赋值不能越界
2、数组的性质1、长度不能改变
2、每个位置只能存放一个
3、数组创建后会有默认值
4、下标从0 开始,只能在指定范围内使用
5、长度属性(length)
6、数组里可以是基本类型,也可以是引用类型
二、玩转数组 1、遍历打印数组int i = 0; while (i2、数组查找某一个值 import java.sql.SQLOutput; import java.util.Scanner; public class Demo02 { public static void main(String[] args) { int[] nums = {1,2,3,4,5,6}; Scanner scanner = new Scanner(System.in); int target = scanner.nextInt(); int result = -1; for (int i = 0; i < nums.length; i++) { if(nums[i] == 5){ result = i; break; } } if(result<0 || result>nums.length-1){ System.out.println("该数字无记录"); }else { System.out.println("有记录"); System.out.println(nums[result]); } } } 3、打擂台式找最值public class Demo03 { public static void main(String[] args) { int[] salsry = {-1,5,8,5,3,3,76,12129,6,545}; //找最大值 // int maxIndex = 0; // for (int i = 1; i < salsry.length; i++) { // if(salsry[maxIndex]4、元素的位移salsry[i]){ minIndex = i; } } System.out.println(salsry[minIndex]); } } public class Demo04 { public static void main(String[] args) { int nums[] = {1,2,3,4}; int temp = nums[2]; nums[2] = nums[3]; nums[3]= temp; for (int i = 0; i < nums.length; i++) { System.out.println(nums[i]); } } } 5、数组的扩容本质上在原有的数组上进行扩容是做不到的,需要一些手段。
第一步:定义一个数组
第二步:定义新数组的长度为扩容长度
第三步:迁移数组数据
第四步:重新指向临时变量
【演示】
public class Demo05 { public static void main(String[] args) { int nums[] = {1,2,3}; //扩容过程 int temp[] = new int[nums.length*2]; //拷贝数据 for (int i = 0; i < nums.length; i++) { temp[i] = nums[i]; } //重新指向nums nums = temp; nums[5] = 40404; for (int i = 0; i < nums.length; i++) { System.out.println(nums[i]); } } }6、数组的反转1)创建反向数组,挨个放入。
public class Demo06 { public static void main(String[] args) { int nums[] = {1,2,3,4,34,34,2,312,2}; int temp[] = new int[nums.length]; for (int i = 0; i < nums.length; i++) { temp[i] = nums[nums.length-1-i]; } nums = temp; for (int i = 0; i < nums.length; i++) { System.out.println(temp[i]); } } }2)数组内容首尾两两交换
public class Demo07 { public static void main(String[] args) { int nums[] = {1,2,3,4,5,6,7,8,9,0}; int temp; for (int i = 0; i < nums.length/2; i++) { temp = nums[i]; nums[i] = nums[nums.length-1-i]; nums[nums.length-1-i] = temp; } for (int i = 0; i < nums.length; i++) { System.out.println(nums[i]); } } }终极综合练习实现员工管理系统
import java.util.Scanner; public class Demo08 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int nums[] = new int[2]; int currnetIndex = -1; int flag = 1; while (true){ System.out.println("请选择功能:1添加工号 2 查找工号 3 打印工号 4 退出"); int function = scanner.nextInt(); if (function ==4){ break; } if (function==1){ System.out.println("请输入要添加得工号"); int num = scanner.nextInt(); //判断是否需要扩容 currnetIndex++; //不满足条件先去扩容 if (currnetIndex > nums.length-1){ int[] temp = new int[nums.length*2]; for (int i = 0; i < nums.length; i++) { temp[i] = nums[i]; } nums = temp; } nums[currnetIndex] = num; } if (function==2) { System.out.println("请输入查找得工号"); int target = scanner.nextInt(); int result = -1; for (int i = 0; i < nums.length; i++) { if (nums[i] == target) { result = i; break; } } System.out.println(result==-1?"没有": "存在"+nums[result]); } if (function==3){ for (int i = 0; i < nums.length; i++) { System.out.println(nums[i]); } } } } }最后最后!!! 学会使用DEbug排错(是每个程序员必会技能之一)