慢慢来,是种诚意,加载中 . . .

java数组


java数组

1.数组的定义

类型[] 名字 = new 类型[长度]

数组可以理解为:是在内存里面开辟了一片空间,空间里面放置很多相同类型的东西

package com.codecheng.arrays;

/**
 * @author CodeCheng
 */
public class Demo1 {
    public static void main(String[] args) {
            //数组的定义
        // int[] nums = {1,2,3};

        int[] nums = new int[3];//申请一片内存空间  nums引用 内存地址 只能放int类型
        nums[0] =1;
        nums[1] =2;
        nums[2] =3;
    //    nums[3] =6;//下标溢出     Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
        System.out.println(nums[1]);//2
    }
}

2.数组的性质

package com.codecheng.arrays;

/**
 * @author CodeCheng
 */
public class Demo1 {
    public static void main(String[] args) {

		//先定义在赋值
        int[] nums = new int[3];//定义一个数组
        nums[0] =1;//给数组赋值
        nums[1] =2;
        nums[2] =3;
        nums[0] =6;


        System.out.println(nums.length);//3  打印数组的长度
      
      //定义和赋值一起
      int [] nums1 ={1,2,3,4};
    }
}

总结:

  • 数组建立后就不能改变长度
  • 每个位置只能存一个值,多了会覆盖
  • 下标从0开始
  • 数组有长度的属性,最后一个位置的编号就是长度-1
  • 数组里可以是基本类型,也可以是引用类型

3.其它类型的数组

package com.codecheng.arrays;

/**
 * @author CodeCheng
 */
public class Demo1 {
    public static void main(String[] args) {
        //其他类型的数组
        String[] strs = new String[5];
        byte[] b = new  byte[5];
        short[] s =new  short[5];
        long[] L = new long[5];
        float[] f = new float[5];
        double[] d =new double[5];
        int[] [] nums=new int[1] [2];
    }
}

4.数组找最大值和最小值

package com.codecheng.arrays;

/**
 * @author CodeCheng
 */
public class FindMax {
    public static void main(String[] args) {
        //擂台找最大值
        int[] nums= {1,52,89,23,7,9,20};
        //1.循环遍历打印出来
        //2.结合判断
        int max = nums[0];
        for (int i = 0; i <nums.length ; i++) {
            if (nums[i] > max){
                max = nums[i];
            }
        }
        System.out.println(max);
    }
}

同理最小值使用min , if (nums[i] < min)就可以了

package com.codecheng.arrays;

/**
 * @author CodeCheng
 */
public class FindMax {
    public static void main(String[] args) {
        //擂台找最大值
        int[] nums= {1,52,89,23,7,9,20};
        //1.循环遍历打印出来
        //2.结合判断
        int min = nums[0];
        for (int i = 0; i <nums.length ; i++) {
            if (nums[i] < min){
                min = nums[i];
            }
        }
        System.out.println(min);
    }
}

5.查找目标值下标

package com.codecheng.arrays;

/**
 * @author CodeCheng
 */
public class FindTarget {
    public static void main(String[] args) {
       //查找5的下标
        int[] nums = {1,2,4,5,9,8};
        int target = -1;
        for (int i = 0; i <nums.length ; i++) {
            if (nums[i] == 5){
                target = i;
                break;
            }
        }
        System.out.println(target);
    }
}

6.数组元素交换

package com.codecheng.arrays;

/**
 * @author CodeCheng
 */
public class FindTarget {
    public static void main(String[] args) {
       //想交换第1和4
        int[] nums = {1,2,4,5,9,8};
        int temp = nums[0];
        nums[0] = nums[2];
        nums[2] = temp;
        for (int i = 0; i <nums.length ; i++) {
            System.out.println(nums[i]);
        }
    }
}

7.数组排序-选择排序(算法)

package com.codecheng.arrays;

/**
 * @author CodeCheng
 */
public class ChooseSort {
    public static void main(String[] args) {
       //选择排序
        int[] nums = {4,6,0,8,7};
        for (int j = 0 ; j < nums.length -1 ; j++){
            int minIndex = j;
            for (int i = j+1; i < nums.length; i++) {
                minIndex =  nums[i] < nums[minIndex] ? i : minIndex;
            }
            int temp = nums[minIndex];
            nums[minIndex] = nums[j];
            nums[j] = temp;
        }

        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i] + " ");
        }
    }
}

每一轮都是在找一个最小值放在未排好序的元素的第一个

8.冒泡排序

package com.codecheng.arrays;

/**
 * @author CodeCheng
 */
public class BubbleSort {
    public static void main(String[] args) {
       //冒泡排序
        int[] nums = {3, 7, 4, 9, 5, 4, 1};

        for (int j = 0; j < nums.length - 1 ; j++) {
            for (int i = 0; i < nums.length - 1 -j ; i++) {
                if (nums[i] > nums[i + 1]) {
                    int temp = nums[i];
                    nums[i] = nums[i + 1];
                    nums[i + 1] = temp;
                }
            }
        }

        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i] + " ");
        }
    }
}

每一轮都是两两相比,会将最大的冒到最后边


评论
  目录