• 一维数组


     Java 一维数组:
    1.定义:
    (1) 类型[] 数组名=new 类型[大小];
    (2) 类型 数组名[]=new 类型[大小];
    2.数组元素引用:数组名[下标]
    下标的下限为0 上限为数组的大小-1
    1.给数组赋随机整型值,代码如下:
    static void setRandom(int[] x){  //x是目标数组
    Random r=new Random();
    //Random不要自己打出来,它是一个类 要在一个包里,看顶头,要是自己手打是没有那一行的,需要Alt+Enter回车调用
    for (int i=0;i<x.length;i++){
    x[i]=r.nextInt(100); //生成一个0-100间的随机整型数赋给x[i]
    //nextInt(int n):返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
    }
    }

    2.为了方便,我们把数组的输出写成方法,代码如下:
    /**
    * 输出刚开始定义的两个数组的结果(观察用的)
    * overload 重载 在外界看来不同类型的数组都用同一个out()方法输出,实则在内部有不用的处理方式
    * @param x 目标数组
    */
    static void out(int[] x){ //int类型的数组用此out()方法
    for(int e: x){
    System.out.print(e+" ");
    }
    System.out.println();
    }
    static void out(String[] x){ //String类型的数组输出用此out()方法
    for(String e: x){ //用for...each...循环写法
    System.out.print(e+" ");
    }
    /*for(int i=0;i<x.length;i++){ //用for循环写法
    System.out.print(int[i]+" ");
    }*/
    System.out.println();
    }

    3.输出两个数组看看(测试),代码如下:
    public static void main(String[] args){
    int[] a=new int[5];
    String b[]=new String[10];//定义数组,大小为10(即数组b有10个元素)
    setRandom(a); //给a数组付随机值
    out(a); //调用out函数输出数组a
    out(b); //调用out函数输出数组b,注意a与b是不同类型的数组。
    }

    4.输出一个斐波那契数列,代码如下:
       static void fb (int[] x){
    x[0]=1;
    x[1]=1;
    for (int i=2;i<= x.length-1;i++){
    x[i]=x[i-1]+x[i-2];
    }
    System.out.println("斐波那契数列输出为:");
    }
    测试:在main方法中加入如下代码:
      int f[]=new int[20];
      fb(f);
      out(f);
    5.在数组中插入一个元素,代码如下:
    /**
    * 在数组中插入一个元素:
    * @param a 目标数组
    * @param x 要插入的元素
    * @param pos 需要插入元素的位置(在哪插入元素)
    */
    //此种插入方法,数组的大小不变,即每插入一个元素,原数组的最后以为元素会被清除
    static void insert(int[] a,int x,int pos){
    for (int j=a.length-1;j>pos;j--){
    a[j]=a[j-1];
    }
    a[pos]=x;
    }
    //此种插入方法,数组的大小会变化,即插入一个元素,数组大小会+1
    /*static int[] insert(int[] a,int x,int pos){
    int[] t=new int[a.length+1];
    for (int i=0;i<a.length;i++){
    t[i]=a[i];
    }
    for (int j=t.length-1;j>pos;j--){
    t[j]=t[j-1];
    }
    t[pos]=x;
    return t;
    }*/

    测试:在main方法中加入如下代码:
    int j[]=new int[5];  //定义数组
    setRandom(j);  //给j赋随机值
    out(j);  //输出原数组j
    insert(j,30,2);  //在j数组的下标为2的位置插入30,与第一种方法对应
    //j=insert(j,30,2); //与第二种方法对应
    out(j);  //再次输出j数组

    6.
    在数组中删除一个元素,代码如下:
    /**
    * 在数组中删除一个元素:
    * @param x 目标数组
    * @param pos 要删除的元素的下标
    * @return
    */
    static int[] delete(int[] x,int pos){
    for (int i=pos;i<x.length-1;i++){
    x[i]=x[i+1];
    }
    return Arrays.copyOf(x,x.length-1);
    }
    测试:在main方法中加入如下代码:
     int j[]=new int[5];//定义数组
    setRandom(j);//给j赋随机值
    out(j);
     delete(j,2);out(j);//这有一个问题:删除一个元素后,Java会自动重赋值最后的元素,数组大小没变
    j=delete(j,2);out(j);
    j=delete(j,3);out(j);
     
     
     
     
  • 相关阅读:
    为什么要用getBaseContext()方法代替this?(转)
    如何让EditText不能自动获取焦点(转)
    context和getApplicationContext()的区别
    Idea 破解
    mysql 免安装
    AngularJS
    GC垃圾回收机制
    JVM类加载机制
    线程池
    面试-数据库
  • 原文地址:https://www.cnblogs.com/tian-xin/p/8384299.html
Copyright © 2020-2023  润新知