zoukankan      html  css  js  c++  java
  • 数组

    5.数组

     //x/y=3...10  x+y+3+10=163 ?x&y
     package com;
     import java.util.Scanner;
     ​
     //一个项目中必须只存在一个main()方法
     public class Application {
         public static void main(String[] args) {
             double[] n = {1.1,1.2,1.3,1.4,1.5};//省略了new double[5]
             //遍历
             for (int i = 0; i < n.length; i++) {
                 System.out.println(n[i]);//遍历
            }
             //计算和
             float sum =0;
             for (int i = 0; i < n.length; i++) {
                 sum = (float) (sum+n[i]);
            }
             System.out.println(sum);
             //寻找最大值
             float max=0;
             for (int i = 0; i < n.length; i++) {
                 if (n[i]>max){
                     max= (float) n[i];
                }
            }
             System.out.println(max);
             //增强for循环
             for (double i:
                  n) {
                 System.out.println("for_each"+i);
            }
             //倒叙
             for (int i = n.length - 1; i >= 0; i--) {
                 System.out.println("倒叙"+n[i]);
            }
        }
     }

     

    数组是具有相同数据类型的有序集合

    每一个数据称为一个数组元素,通过下标来访问(下标0为第一个元素)

    5.1数组的声明与创建

      1、首先必须声明数组变量,后方可使用:

     dataType[] arrayRefVar;  //首选的方法
     dataType arrayRefVar[];  //效果相同

      2、Java语言使用new操作符来创建数组

     dataType[] arrayRefVar = new dataType[arraySize];
     int[] a1 = new int[5];
     double[] a2 = new double[10];
     //x/y=3...10 x+y+3+10=163 ?x&y
     //x/y=3...10 x+y+3+10=163 ?x&y
     package com;
     import java.util.Scanner;
     ​
     //一个项目中必须只存在一个main()方法
     public class Application {
         public static void main(String[] args) {
             double[] nums = new double[5];
             double[] n = {1.1,1.2,1.3,1.4,1.5};//省略了new double[5]
             int[] num = new int[5];
             char[] c = new char[5];
             boolean[] b = new boolean[2];
             String[] s = new String[]{"hello","world","Come On!"};
     ​
     ​
             num[0] =1;
             num[1] =2;
             num[3]=3;
             nums[1]=1.2;
             System.out.println(num[2]);
             System.out.println(n[3]);
             System.out.println(nums[0]);
             System.out.println(s[0]);
             System.out.println(s.length);
             System.out.println(b[0]=true);
        }
     }

      3、数组的元素是通过索引访问的,数组索引从零开始。

      4、获取数组长度:

     arrays.length
     package com.hch.array;
     ​
     public class Demo01_array {
         //变量类型 变量名字   =   变量的值;
         public static void main(String[] args) {
             /**
              * 1、定义;声明一个数组
              * int[] nums1;
              * 2、创建一个数组
              * nums1 = new int[10];
              * int nums2[]; //定义2;了解。
              * */
             int[] nums1 = new int[10];  //声明创建一起完成
     ​
             //给数组元素赋值
             nums1[0] = 1;
             nums1[1] = 2;
             nums1[2] = 3;
             nums1[3] = 4;
             nums1[4] = 5;
             nums1[5] = 6;
             nums1[6] = 7;
     ​
             System.out.println(nums1[3]);
             System.out.println(nums1[7]);//未赋值的数组元素默认为0
     //       System.out.println(nums1[10]); 数组下标越界错误
     ​
             //计算所有的数组元素的和
             int sum = 0;
             //获得数组的长度   array.length
             for (int i = 0; i < nums1.length; i++) {
                 sum = sum + nums1[i];
            }
             System.out.println(sum);
        }
     }

    5.2 数组的基本特点

      1、长度确定;一旦创建,其大小不可变更;

      2、数组中元素数据类型必须相同;

      3、数据类型为任意包括基本类型和引用类型;

      4、数组变量属于引用类型;

      5、数组也可看作对象,其中的数组元素为该对象的成员变量;

      6、数组对象本身在

      7、下标合法区间:[0 , length-1],如果越界就会报错:ArrayIndexOutOfBoundsException:数组下标越界异常

    5.3三种初始化

    5.3.1静态初始化

     int[] a = {1,2,3};
     Man[] mans = {new Man(1,1),new Man(2,2)};

    5.3.2动态初始化

     int[] a = new int[2];
     a[0] = 1;
     a[1] = 2;

    5.3.3数组的默认初始化

    ·数组是引用类型;其元素相当于类的实例变量;因此数组一经分配空间,其中的每个元素被隐式初始化;

     package com.hch.array;
     ​
     public class Demo02_array {
     ​
         public static void main(String[] args) {
             //静态 初始化==>创建+赋值
             int[] a = {1,2,3};
             System.out.println(a[2]);
     ​
             //动态初始化(包含默认初始化)
             int[] b = new int[3];
             b[0] = 1;    
        }
     }
     ​

    5.4数组的使用

    普通for循环

     package com.hch.array;
     ​
     public class Demo03_array {
         public static void main(String[] args) {
             int[] array = {1,2,3,4,5};
             //遍历所有元素
             for (int i = 0; i < array.length; i++) {
                 System.out.println(array[i]);
            }
             System.out.println("<=============>");
             //计算和
             int sum = 0;
             for (int i = 0; i <array.length ; i++) {
                 sum = sum + array[i];
            }
             System.out.println(sum);
             System.out.println("<=============>");
             //查找最大元素
             int max = array[0];
             for (int i = 0; i < array.length; i++) {
                 if (array[i] > max){
                     max = array[i];
                }
            }
             System.out.println(max);
        }
     }

     

    For-Each循环

     package com.hch.array;
     //增强for循环 for-each
     public class Demo04_array {
         public static void main(String[] args) {
             int[] a ={1,2,3};
             //JDK1.5以上,没有下标
             /**
             
             */
             for (int i : a) {
                 System.out.println(i);
            }
             printArray(a);
        }
     }

    数组作为方法入参

     package com.hch.array;
     ​
     public class Demo04_array {
         public static void main(String[] args) {
     ​
             printArray(a);
         
        }
     ​
         //打印数组元素
         public static void printArray(int[] a){
             for (int i = 0; i < a.length; i++) {
                 System.out.print(a[i]+" ");
            }
        }
     }
     ​

    数组作为返回值

     package com.hch.array;
     ​
     public class Demo04_array {
         public static void main(String[] args) {
             int[] reverse = reverse(a);
             printArray(reverse);
        }
     
         //打印数组元素
         public static void printArray(int[] a){
             for (int i = 0; i < a.length; i++) {
                 System.out.print(a[i]+" ");
            }
        }
     ​
         //反转数组
         public static int[] reverse(int[] a){
             int[] result = new int[a.length];
             //反转操作
             for (int i = 0,j = result.length -1 ; i < a.length; i++,j--) {
                 result[j] = a[i];
            }
     ​
             return result;
        }
     }
     ​

    5.5多维数组

    “数组的数组,如:二维数组是一个特殊的一维数组”

    二维数组:

     int a[][] = new int[2][4];
     package com.hch.array;
     ​
     public class Demo05_array {
         public static void main(String[] args) {
     //       int[][] array = new int[3][3];
             int[][] array = {{1,2},{3,4},{5,6}};
             System.out.println(array[2][0]);
        }
     }

    5.6 Arrays类

    数组的工具类:java.util.Arrays (查看JDK帮助文档)

    Array类中的方法都是用static修饰的静态方法,在使用的时候直接使用类名来调用

    功能:

      1、给数组赋值:通过fill方法

      2、对数组排序:通过sort方法,按升序

      3、比较数组:通过equals方法比较数组中元素值是否相等

      4、查找数组元素:通过binarySearch方法对排序好的数组进行二分查找操作

     package com.hch.array;
     ​
     import java.util.Arrays;
     ​
     public class Demo06_array {
         public static void main(String[] args) {
             int[] a = {1,5,7,34,543,234,1234};
     //       System.out.println(Arrays.toString(a)); 打印数组元素
     ​
             //对数组进行排序
             Arrays.sort(a);  //升序
             System.out.println(Arrays.toString(a));      
        }
     }

    5.7 冒泡排序

    八大排序之一:冒泡排序、选择排序、插入排序、快速排序、堆排序、希尔排序、归并排序、计数排序

    两层循环;外层冒泡轮数;里层依次比较

     package com.hch.array;
     import java.util.Arrays;
     /**
      * 冒泡排序
      * 1、比较数组中两个相邻的元素,如果第一个比第二个大就交换位置
      * 2、每一次比较都会产生一个最大、或者最小的数字
      * 3、下一轮则可以少一轮排序
      * 4、依次循环,直到结束
      * */
     public class Demo07_array {
         public static void main(String[] args) {
             int[]  a = {1,45,43,7,65,234,12,11};
             int[] s = sort(a);
             System.out.println(Arrays.toString(a));
        }
     ​
         public static int[] sort(int[] array){
             int temp = 0;
             //外层循环,判断循环次数
             for (int i = 0; i < array.length-1; i++) {
                 boolean flag = false;//通过flag标识,减少没有意义的比较
                 //内层循环,判断大小则交换位置
                 for (int j = 0; j < array.length-1-i; j++) {
                     if (array[j+1] < array[j]){   // < :从小到大 > : 从大到小
                         temp = array[j];
                         array[j] = array[j+1];
                         array[j+1] = temp;
                         flag = true;
                    }
                }
                 if (flag == false){
                     break;
                }
            }
             return array;
        }
     }

    5.8扩展:稀疏数组

     package com.hch.array;
     ​
     public class Demo08_array {
         public static void main(String[] args) {
             //1、创建一个二维数组 0:没有棋子 1:黑棋 2:白棋
             int[][] array1 = new int[11][11];
             array1[1][2] = 1;
             array1[2][3] = 2;
             //输出原始数组
             for (int[] ints:
                  array1) {
                 for (int anInt:
                      ints) {
                     System.out.print(anInt+" ");
                }
                 System.out.println();
            }
             System.out.println("<==========================>");
             //转换为稀疏数组保存
             //1、获取有效值个数
             int sum = 0;
             for (int i = 0; i < 11; i++) {
                 for (int j = 0; j < 11; j++) {
                     if (array1[i][j] != 0){
                         sum++;
                    }
                }
            }
             System.out.println("有效值个数:"+sum);
             //2、创建一个稀疏数组
             int[][] array2 = new int[sum+1][3];
             array2[0][0] = 11;
             array2[0][1] = 11;
             array2[0][2] = sum;
             //3、遍历二维数组,将非零的值存放在稀疏数组中
             int count = 0;
             for (int i = 0; i < array1.length; i++) {
                 for (int j = 0; j < array1[i].length; j++) {
                     if (array1[i][j] != 0){
                         count++;
                         array2[count][0] = i;
                         array2[count][1] = j;
                         array2[count][2] = array1[i][j];
                    }
                }
            }
             System.out.println("<==========================>");
             System.out.println("稀疏数组:");
             //4、输出稀疏数组
             for (int i = 0; i < array2.length; i++) {
                 System.out.println(array2[i][0]+" "+
                         array2[i][1]+" "+
                         array2[i][2]+" ");
            }
        }
     }
     ​
  • 相关阅读:
    职业发展拷问——非科班出身如何才能成为一名合格程序员
    记一个神奇的Bug
    Python多维数组切片
    如何查看数组指针指向数组的所有元素
    RoboMongo命令(版本:Robo 3T 1.1.1)
    Git命令(Git版本:Linux 2.14.3)
    逐点收敛与一致收敛
    廖雪峰Python教程疑问
    The Non-Inverting Amplifier Output Resistance by Adrian S. Nastase [转载]
    2.4G无线射频通信模块nRF24L01+开发笔记(基于MSP430RF6989与STM32f0308)(1.(2)有错误,详见更正)
  • 原文地址:https://www.cnblogs.com/joey-413/p/13234818.html
Copyright © 2011-2022 走看看