> 文档中心 > 详析一维数组

详析一维数组

一维数组初始化

动态初始化:int[] arrays = new int[数组长度];静态初始化:int[] arrays = {元素1,元素2,元素3,......};动静结合初始化int[] arrays = new int[] {元素1,元素2,元素3,......}

获取数组长度

//定义一个数组int[] arrays = {1,3,4,1,4,6,8,8,9,10,22};//获取数组长度int t = arrays.length;

一维数组遍历打印

//定义一个数组int[] arrays = {1,2,3,4,5,45,22,10}//第一种:用数组下标来进行循环打印for(int i = 0; i < arrays.length; i++){    System.out.println(arrays[i]);}//第二种:foreach遍历打印for(int t : arrays){    System.out.println(t);}

一位数组特点

1.数组中只能存储一组相同类型的数据

2.数组的长度(数据个数)是固定的,不能多也不能少,少的系统会给默认值补充

数组元素的默认值:    只要是数字类型(整数型、浮点型):0或者0.0    字符:空白字符'' (对应的数字0)--null    布尔:false

3.数组在内存中是一组连续的内存空间

4.数组是有序的(内存地址有序0,1,2,3......)

5.数组中可以存储重复的元素

注意:

   /*    * 1.  当多个引用类型的变量,公用同一块内存空间,    * 某个变量,更改了该内存中的数据,其他正在引用的变量    * 再次使用该数据时,也是使用的改变之后的数据    */   int[] a = new int[] {1,2,3};//a引用了一块内存   int[] b = a;//a,b公用一块内存空间   a[0] = 100;   System.out.print(b[0]);//b[0] == 100   /*    * 2.  多个引用类型的变量,公用同一块内存空间,    * 某个变量去引用其他内存空间,其他的不受影响,还用原来的    */      int[] a = new int[] {1,2,3};//a引用了一块内存      int[] b = a;//a,b公用一块内存空间      a = null;      System.out.print(b[0]);//b[0] == 1   /*    * 3.    *null  :  空   没有指定内存空间​*如果数组的值为null,除了打印以外,无法使用    *null 不能赋值给基本数据类型    */      int[] array = null

一维数组插入一个元素值

import java.util.Scanner;/** * 给数组中插入元素 * @author Amid * */public class ArraysInsertNum{    static Scanner scanner = new Scanner(System.in);//从控制台获取数据的工具    public static void main(String[] args){ //定义一个长度为10的数组,这时还未给数组内元素进行赋值,所以这时候数组内元素的值都是默认值0 int[] arrays = new int[10]; giveNum(arrays);//调用giveNum方法,从控制台给数组内元素赋值 System.out.println("请输入你要插入位置的元素值"); //调用findIndex方法,获得arrays数组内某个值的下标 int index = findIndex(arrays,scanner.nextInt()); System.out.println("请输入你要插入的元素值"); //调用arraysInsertNum方法,获得插入元素后的新数组 //调用ergodicPrintArray方法遍历打印新数组  ergodicPrintArray( arraysInsertNum(arrays, index, scanner.nextInt()));     }/** * 从控制台给数组内元素赋值 * @param arrays * @return */    static int[] giveNum(int[] arrays){//把定义的数组传进来 for(int i = 0; i < arrays.length; i++){//遍历传进来的这个数组     System.out.println("请输入arrays[" + i +"]=?");//提示语句     arrays[i] = scanner.nextInt();//给数组内元素依次赋值 } return arrays;//返回赋值完成的数组    }/** * 遍历打印数组 * @param arrays */    static void  ergodicPrintArray(int[] arrays){//传进来一个数组 for(int i = 0; i < arrays.length; i++){//遍历传进来的这个数组     System.out.println(arrays[i] + " ");//输出数组的每个元素的值 }    }/** * 找到数组arrays中元素值为num的下标,如果能找到就返回下标值,没找到就返回-1 * @param arrays * @param num * @return */    static int  findIndex(int[] arrays,int num){//传进来一个数组,和一个整型值 for(int i = 0; i  arrays.length){//如果下标值等于-1或者大于数组长度就指针越界     System.out.println("你输入的元素值有误"); }  /*  * 往数组添加元素  */   int[] arraysNew = new int[arrays.length + 1];//定义一个新数组,用来存放插入元素后的数组 for(int i = 0; i < arrays.length; i++){//遍历数组     if(i < index){  arraysNew[i] = arrays[i];//插入位置之前的元素,原封不动挪到新数组里     }else {  arraysNew[i + 1] = arrays[i];     } } arraysNew[index] = num; return arraysNew;    }}

删除一个元素

public class ArraysDeleteNum{    static Scanner scanner = new Scanner(System.in);//从控制台获取数据的工具    public static void main(String[] args){ //定义一个长度为10的数组,这时还未给数组内元素进行赋值,所以这时候数组内元素的值都是默认值0 int[] arrays = new int[10]; giveNum(arrays);//调用giveNum方法,从控制台给数组内元素赋值 System.out.println("请输入你要删除的元素值"); //调用findIndex方法,获得arrays数组内某个值的下标 int index = findIndex(arrays,scanner.nextInt()); //调用arraysDeleteNum方法删除某个元素,生成新的数组 //调用ergodicPrintArray方法遍历新数组 ergodicPrintArray(arraysDeleteNum(arrays,index));     }/* * 从控制台给数组内元素赋值 */    static int[] giveNum(int[] arrays){ for(int i = 0; i < arrays.length; i++){     System.out.println("请输入arrays[" + i +"]=?");     arrays[i] = scanner.nextInt(); } return arrays;    }/* * 遍历打印数组 */    static void  ergodicPrintArray(int[] arrays){ for(int i = 0; i < arrays.length; i++){     System.out.println(arrays[i] + " "); }    }/* *找到数组arrays中元素值为num的下标,如果能找到就返回下标值,没找到就返回-1 */    static int  findIndex(int[] arrays,int num){ for(int i = 0; i  arrays.length){     System.out.println("你输入的元素值有误"); } //删除元素 //定义一个新数组,存放删除某个元素后的新序列 int[] arraysNew = new int[arrays.length -1]; for(int i = 0; i < arraysNew.length; i++){     if(i < index){  arraysNew[i] = arrays[i];     }else {  arraysNew[i] = arrays[i + 1];     } } return arraysNew;     }}