美文网首页
JavaSE之数组

JavaSE之数组

作者: 伍陆柒_ | 来源:发表于2019-03-05 17:16 被阅读0次

语法及元素访问

public class ArrayDemo1 {
    public static void main(String[] args) {
        // 数据类型
        // 1.基本数据类型 : byte short int long float double char boolean
        // 2.引用数据类型:①类(String,Scanner,Random,Math..);②接口;③数组
        // 数组 :1.它能保存一组数据类型相同数据,我们把数组保存的数据称为元素,2.定长(固定长度)
        // 如何声明,创建一个数组
        int num = 1;
        // ①
        int arr[] = new int[5];// 5代表的是数组长度,运行过程中不可变的
        // 数组元素的访问--通过索引值(下标值,从0开始,所以长度为n的数组,下标值范围从0到n-1)
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        System.out.println(arr[3]);
        System.out.println(arr[4]);
        // ArrayIndexOutOfBoundsException 数组越界异常
        System.out.println(arr[5]);
    }
}
public class ArrayDemo2 {
    public static void main(String[] args) {
        // new : 开辟堆内存的操作符
        int arr[] = new int[4];
        int arr1[] = new int[4];
        String str[] = new String[2];
        System.out.println(str[2]);
//      System.out.println(arr[0]);
//      arr[0] = 1.2;
//      System.out.println(arr[0]);
//      
//      char arr1[] = new char[3];
//      arr1[0] = 'a';
//      
//      String str[] = new String[2];
//      str[0] = "hello";
//      str[1] = "world";
        
        // 1.数组有默认值(整型0,浮点型0.0,字符型\u0000,布尔型false,字符串型null)
        // 2.长度必须指定
        // 3.new关键字
        int num = 100;
        System.out.println(num);
        System.out.println(arr[0]);
    }
}

一些错误方式

public class ArrayDemo4 {
    public static void main(String[] args) {
        // 数组创建方式
        // 1. int arr1[] = new int[3];必须指定长度,默认保存3个0
        int arr1[] = new int[3];
        arr1[0] = 1;
        arr1[1] = 3;
        arr1[2] = 9;
        
        // 2. int arr2[] = new int[] {1,3,9};长度就是{}中元素的个数,直接赋值
        int arr2[] = new int[] {1,3,9};
        
        // 3. int arr3[] = {1,3,9}; 直接赋值
        int arr3[] = {1,3,9};
        
        /*
         * 注意:一些错误的声明方式
         *  int arr1[5] = new int[];
         *  int arr2[] = new int[3] {1,3,9};
         *  int arr3[3] = {1,3,9};
         */
    }
}

数组的遍历(重点)

public class ArrayDemo5 {
    public static void main(String[] args) {
        // 数组的遍历 : 将数组当中元素,逐个取出来
        int arr[] = { 4, 7, 23, 5, 8, 9, 0, -5 };
        // 数组长度
        // System.out.println(arr.length);
        // 遍历
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

        String str[] = { "hello", "world", "你好", "大家好" };
        for (int i = 0; i < str.length; i++) {
            System.out.println(str[i]);
        }
    }
}

Foreach循环写法

public class ForeachDemo {
    public static void main(String[] args) {
        // 增强for循环
        int arr[] = {1,345,678,890,32};
        
//      for(int i = 0;i < arr.length;i++) {
//          int num = arr[i];
//          System.out.println(i+","+num);
//      }
        
//      int i = 0;
//      for(int num : arr) {
//          System.out.println(i+","+num);
//          i++;
//      }
    }
}

数组的排序(重点)

public class Demo2 {
    public static void main(String[] args) {
        // 数组的排序
        int arr[] = {12,1,55,7,89,32};
        // 1.冒泡排序(必须)
        // 外层循环--一共比较多少轮
//      for(int i = 1;i < arr.length;i++) {
//          // 每一轮比较的次数与第几轮和数组长度有关
//          for(int j = 0;j < arr.length - i;j++) {
//              if(arr[j] > arr[j+1]) {
//                  int temp;
//                  temp = arr[j];
//                  arr[j] = arr[j+1];
//                  arr[j+1] = temp;
//              }
//          }
//      }
//      for(int num : arr) {
//          System.out.print(num+" ");
//      }
        
        // 2.选择排序(非必须)
        for(int i = 0;i < arr.length - 1;i++) {
            for(int j = i + 1;j < arr.length;j++) {
                if(arr[i] > arr[j]) {
                    int temp;
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        for(int num : arr) {
            System.out.print(num+" ");
        }
    }
}

经典练习

public class HomeWork5 {
    public static void main(String[] args) {
        // 在一个有8个整数(18,25,7,36,13,2,89,63)
        // 的数组中找出其中最大的数及其下标
        // 解题思路 : 
        int arr[] = {18,25,7,36,13,2,89,63};
        // 假设arr[0]是最大值
        int max = arr[0];
        // 最大值的下标0
        int index = 0;
        int i = 0;
        
        for(int num : arr) {
            if(num > max) {
                max = num;
                index = i;
            }
            i++;
        }
        System.out.println(index+","+max);

//      for(int i = 0;i < arr.length;i++) {
//          if(arr[i] > max) {
//              max = arr[i];
//              index = i;
//          }
//      }
//      System.out.println(index+","+max);
    }
}
public class Practice3 {
    public static void main(String[] args) {
        // 模拟35选7 :生成7个不同的1-35之间的数字(只有一个循环,只涉及一个数组)
        boolean b[] = new boolean[35];// 35个false
        Random ran = new Random();
        for(int i = 0;i < 7;i++) {
            // 生成一个1-35之间的数字
            int num = ran.nextInt(35)+1;
            // 判断之前是否生成过,到b这个数组中检查下标值为num-1对应元素是true还是false来确认是否生成过
            if(b[num-1]) {
                i--;
            }
            else {
                // 表示生成过
                b[num-1] = true;
                System.out.print(num+" ");
            }
        }
    }
}

非重点

二维数组的创建

public class ArrayDemo6 {
    public static void main(String[] args) {
        // 二维数组:数组当中存数组
        // int arr[] = new int[3];
        // {{1,4,9,11},{20,211},{9}}
        int arr[][] = new int[3][];//前面的括号代表长度,后面的无影响
        
        arr[0] = new int[4];
        arr[0][0] = 1;
        arr[0][1] = 4;
        arr[0][2] = 9;
        arr[0][3] = 11;
                
        arr[1] = new int[2];
        arr[1][0] = 20;
        arr[1][1] = 211;
        
        arr[2] = new int[1];
        arr[2][0] = 9;

        System.out.println(arr[0][1]);
                
        // int arr[] = new int[]{1,2,3};
//      int arr[][] = new int[][] {{1,2,3},{2},{3,4,5}};
        
        
        
        // int arr1[] = {1,2,3,5,6};
//      int arr1[] = {1,2,3,5,6};
//      int arr2[][] = {
//                  {1,2,3},
//                  {4,5},
//                  {1,567,98,78,123,345},
//                  {0}
//              };
//      System.out.println(arr2.length);// 4
//      System.out.println(arr2);
//      System.out.println(arr2[0]);
//      System.out.println(arr2[0][0]);
    }
}

二维数组的遍历

public class Demo1 {
    public static void main(String[] args) {
        // 1.3种创建方式
        int[][] arr1 = new int[3][];
        arr1[0] = new int[3];
        arr1[0][0] = 10;
        arr1[0][1] = 11;
        arr1[0][2] = 12;
        
        arr1[1] = new int[1];
        arr1[1][0] = 20;
        
        arr1[2] = new int[2];
        arr1[2][0] = 30;
        arr1[2][1] = 31;
        
//      int arr2[][] = new int[][] {{10,11,12},{20},{30,31}};
//      int []arr3[] = {{10,11,12},{20},{30,31}};
        // 2.二维数组的遍历
        for(int i = 0;i < arr1.length;i++) {
            for(int j = 0;j < arr1[i].length;j++) {
                System.out.print(arr1[i][j]+" ");
            }
            System.out.println();
        }
    }
}

快速排序和数组拷贝

public class Demo3 {
    public static void main(String[] args) {
        // 快速排序
//      int arr[] = {12,1,55,7,89,32};
//      Arrays.sort(arr);
//      for(int num : arr) {
//          System.out.print(num+" ");
//      }
        
        // 数组复制
        int arr1[] = {1,2,3,4,5};
        int arr2[] = {6,7,8,9,10,11,12,13,14,15};
        System.arraycopy(arr1, 0, arr2, 4, 2);
        for(int num : arr2) {
            System.out.print(num+" ");
        }
    }
}

相关文章

  • JavaSE之数组

    一维数组:一条线 二维数组:一个面 三维数组:一个立方体,三维数组使用较少,这里不提及。 一维数组 数组的创建 声...

  • JavaSE之数组

    六、数组 目录:数组概述、数组声明创建、数组使用、多维数组、Array类、稀疏数组 1.什么是数组 数组的定义:数...

  • JavaSE之数组

    课前小例 数据类型: 1.基本数据类型:byte short int long float double char...

  • JavaSE之数组

    语法及元素访问 一些错误方式 数组的遍历(重点) Foreach循环写法 数组的排序(重点) 经典练习 非重点 二...

  • JavaSE之数组复习

    一维数组 介绍 数组是一种引用类型 数组是一种简单的数据结果,线性的结构 数组是一种容器,可以来存储其他元素,数组...

  • JavaSE——数组集合

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互...

  • JavaSE 数组排序

    Java数组排序是数组操作常用操作之一,通过排序将数组中原来顺序按照升序(从小到大)或降序(从大到小)重新组织。数...

  • javaSE - 006 - 数组

    定义,java的数组是引用类型 相同数据类型的连续的数据空间1.动态初始化 2.静态初始化

  • 2018-09-21

    关于数组 @(JavaSE) 数组平时用的太频繁了,可能就是因为用的太多,竟然根本就没有想过数组其实也是对象。任何...

  • JavaSE 基础学习之五 —— IO 操作 (java. io

    接上篇《JavaSE 基础学习之四 —— 异常的处理》 五. JavaSE 基础学习 —— IO 操作 (java...

网友评论

      本文标题:JavaSE之数组

      本文链接:https://www.haomeiwen.com/subject/epuouqtx.html