目录
数组概念
一组连续的存储空间,存储多个相同的数据类型的值
数组创建
int [] str=new int[5];
数组使用
创建;存值;取值
创建
int []nums=new int[4];
存值
nums[0]=1;
nums[1]=1;
nums[2]=1;
nums[3]=1;
取值
方法一:int num=nums[3];
System.out.println(num);
方法二:System.out.println(nums[0]);
遍历
方法一:for(int i=0;i<=nums.length;i++){
System.out.println(nums[i]);
方法·二:for(int i:nums){//
System.out.println(i);
获取数组长度
System.out.println(nums.length);//查看数组长度
数组默认值
整数 | 0 |
小数 | 0.0 |
布尔 | false |
字符 | \u0000 |
其他 | null |
练习题1
1、给定一个整数数组,读入一个整数,如果n在数组中存在,输出下标,不存在输出-1
int str[]=new int[]{12,3,4,5};
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个整数");
int num=sc.nextInt();
boolean flag=false;//没找到
for(int i=0;i<str.length;i++){
if(num==str[i]){
flag=true;//找到了
System.out.println("下标"+i);
}
}
if(!flag){//flag=false
System.out.println("下标-1" );
}
练习题2
数组插入、删除、查找、替换、扩容
static int size = 0;// 有效元素个数
// 数组扩容
static int[] nums = new int[5];
public static void main(String[] args) {
insert(0, 11);
insert(1, 22);
insert(2, 33);
printArray();
insert(3, 44);
printArray();
int target=search(4);
System.out.println(target);
replace(1,90);
printArray();
delete(1);
printArray();
}
// 定义一个方法为nums数组添加新值
public static void insert(int position, int value) {
//进行扩容
if(size==nums.length){
expand();
}
// for(int i=0;i<nums.length;i++)
// { if(nums[i]==0)
// { nums[i]=value;
// break;
// } }
// nums[size]=value;
// size++;//保存新值,
// nums[size++]=value;
// 移动元素。进而插入值
if (position < 0 && position > size) {// 有效位置判断
System.out.println("输入位置错误,请输入0到" + size + "之间的位置");
return;
}
for (int size ,i=0; i > position; i--) {
nums[i] = nums[i - 1];
}
nums[position] = value;
size++;
}
public static void expand(){//扩容的方法
System.out.println("开始扩容");
int[] newnums=new int [nums.length*2];
System.arraycopy(nums, 0, newnums, 0, nums.length);
//地址替换
nums=newnums;
}
public static void delete(int position){//删除
if (position < 0 && position > size) {// 有效位置判断
System.out.println("输入位置错误,请输入0到" + size + "之间的位置");
return;
}
for(int i=position;i<size-1;i++){
nums[i]=nums[i+1];
}
size--;//元素个数递减
//删除功能,根据删除位置输入对应值,将位置后的值一次向前移动
}
public static void replace(int position,int value){//替换
if (position < 0 && position > size) {// 有效位置判断
System.out.println("输入位置错误,请输入0到" + size + "之间的位置");
return;
}
nums[position]=value;
//将原位置的值替换为新值
}
public static int search(int position){//查找
//将通过下标获取对应的值,
if (position < 0 && position > size) {// 有效位置判断
System.out.println("输入位置错误,请输入0到" + size + "之间的位置");
return -1;//-1代表有问题无对应的下标;
}
return nums[position];
}
// 遍历数组的方法
public static void printArray() {
for (int i = 0; i < size; i++) {
System.out.print(nums[i] + "\t");
}
System.out.println();
}