java学习之路&&数组

1.数组定义:             

       1.保存一组相同的数据类型的数据;

2.数组定义格式:

      1.数据类型[] 数组名 = 初值;

3.数组的声明方式(共三种)
      1.  int [] array = new [数组的长度(length)];

      2. int [] array = new[] {1,2,3,4,5,6};

      3. int [] array = { 1,2,3,4,5}

 实例: 1.根据角标查找对应的元素;   

         2.根据元素查找对应的角标

      int [] array = { 2,3,4,6,7}                                                

      for(i=0;i<array.length;i++){      

       if(array[i]==3){

                      System.out.println(i);

          }

}



2.封装一个函数知道数组和一个数组里面的数值;找到这个数值在数组下面对应的index索引值;

public static int findStringToKey(int[] array, int key) {
        // 声明一个角标 找相应的数据;
        int index = -1;
        for (int i = 0; i < array.length; i++) {
            if (key == array[i]) {
                index = i;
                break;
            }
        }
        return index;

    };


3.数组反转,将数组倒序排列,封装一个方法;

    public static void changnum(int[] array) {
        for (int i = 0; i < array.length / 2; i++) {
            int temp = array[i];
            array[i] = array[array.length - i - 1];
            array[array.length - i - 1] = temp;
          

        }


  4 .冒泡排序  核心思想:相邻两个位置比较换位;

            外层循环控制一共跑了多少趟; 内层循环控制一趟比了多少次;

            内循环减去1防止j+1越界;     外层循环i循环一次都会产生一个最大值或者最小值;这样内层循环j的次数减少一次;

public static void change(int[] array) {
          for (int i = 0; i < array.length-1; i++) {
            for (int j = 0; j < array.length-1-i; j++) {
                if(array[j]<array[j+1]) {
                    int temp =array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
        }
          System.out.println(Arrays.toString(array));
     }


5.选择排序

         public static void change(int[]array) {
           for (int i = 0; i < array.length-1; i++) {
            for (int j =1+i; j < array.length; j++) {
                //用第0个和剩下的每一个数比较;
                //写出来;
                //i=0; j  1 2 3..
                //i=1;j  ,2,3...
                //i=2;j   ,3
                if(array[i]>array[j]) {
                    int temp = array[i];
                    array[i]=array[j];
                    array[j]=temp;
                }
            }
        }

       }


6.折半法(2分法);

public static void find(int[] array, int key) {
        int min = 0;
        int max = array.length - 1;
        int middle = (min + max) / 2;
        while (array[middle] != key) {
            // 判断 key 和中间角标值
            // 来移动最小和最大角标;
            if (key > array[middle]) {
                min = middle + 1;
            }
            if (key < array[middle]) {
                max = middle - 1;
            }
            // 每次循环要有折半的操作;
            middle = (min + max) / 2;
            // 数组中没有这个数的时候;
            if (min > max) {
                // 没有这个数使用-1表示;
                middle = -1;
                break;
            }
        }

        System.out.println("改值得坐标是:"+middle);

    }


4.        二维数组

    1. 如何声明一个二维数组

           int [][] array = new int[] []{

{1,2,3}

{3,4,5}

}

      2.  遍历二维数组

for (int i = 0; i < array1.length; i++) {                     //遍历二维数组的每一项一维数组;
            for (int j = 0; j < array1[i].length; j++) {    //遍历第 i 项一维数组数组的每一项;
                System.out.print(array1[i][j]+"  ");
            }
            System.out.println();
        }

    }


5.关于栈内存和堆内存的一些研究

如上面所示:封装了一个方法:目标是为了让a和b进行位置交换;在调用这个方法以后,输出的a和b并没有发生数值的对调;通过一个图标可以显现出a和b 不互换位置的原因; main函数和change函数同在栈内存的不同区域;


2.关于数组储存的位置以及位置的查找


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值