zoukankan      html  css  js  c++  java
  • 6. Java 数组

    数组概述

    • 同类型的数据的有序集合
    • 同类型的若干个数据,按照一定的先后次序排列组合
    • 每一个元素称为数组元素,数组元素可以通过一个下标来访问

    数组声明创建

    • 声明方式

      // 声明数组
      int[] nums;// 建议使用
      int nums1[];
      // 创建数组
      int[] nums = new int[5];// 可以存放5个int类型的数字
      // 获取数组长度
      nums.length;
      // 数组下标 从 0 开始
      
      

    数组状态初始化

    • 静态初始化:创建+赋值

      int[] a = {1, 2, 3, 4, 5};
      
    • 动态初始化:包含默认初始化

      int[] a = new int[10];
      a[0] = 1;
      ...
      
    • 数组的默认初始化

      数组是引用类型,一经分配空间,其中每个元素也被按照实例变量同样的方式被 隐士初始化。

    数组的基本特点

    • 数组的长度是确定的。数组一旦被创建其长度是不可变的

    • 数组的元素必须是同一类型的

    • 数组的元素可以为任意数据类型。既可以是基本类型,亦可以是引用类型

    • 数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量

      数组本身就是对象,Java对象存储在 堆 中

    数组的边界

    • 下标的合法区间:[0, length - 1]

    数组使用

    • 普通for循环
    • for-each 循环
    • 数组作方法入参
    • 数组做返回
    public class Array01 {
        public static void main(String[] args) {
            // 静态初始化数组
            int[] arrays = {1, 2, 3, 4, 5};
    
            // 打印所有元素
            for (int i = 0; i < arrays.length; i++) {
                System.out.println(arrays[i]);
            }
    
            // 求和
            int sum = 0;
            for (int i = 0; i < arrays.length; i++) {
                sum += arrays[i];
            }
            System.out.println(sum);
    
            // 打印最大元素
            int larger = 0;
            for (int i = 0; i < arrays.length; i++) {
                if(arrays[i]>larger){
                    larger = arrays[i];
                }
            }
            System.out.println(larger);
            
            // for-each 循环(since : JDK1.5)
            for (int array : arrays) {
                
            }
    
            // 反转数组
            int[] reverseArrays = new int[arrays.length];
            for (int i = arrays.length-1; i >=0; i--) {
                reverseArrays[i] = arrays[i];
                System.out.print(reverseArrays[i]);
            }
        }
    }
    

    多维数组

    • 多维数组可看成数组的数组,其每一个元素都是一个一维数组

    • 二维数组定义

      int arrays[][] = new int[*][*];
      

    Arrays 类

    • java.utils.Arrays 的使用

    排序算法

    冒泡算法

    • 总共八大排序。冒泡排序,两层循环,外层冒泡轮数,里层依次比较

    • 时间负责度: O(n2)

          public static void main(String[] args) {
              /*
              冒泡排序:核心就是比较数组中两个相邻的元素,如果第一个数比第二个数大,就交换位置,
              每一次比较都会出现一个最大或最小的数
              依次循环至结束
               */
              int[] arrays = {1, 9, 2, 10, 7, 6, 8};
              
              // 外层循环
              int temp = 0;
              for (int i = 0; i < arrays.length-1; i++) {
                  // 内层循环,如果第一个数比第二个大 就交换位置
                  for (int j = 0; j < arrays.length-1-i; j++) {
                      if(arrays[j+1] < arrays[j]){
                          temp = arrays[j];
                          arrays[j] = arrays[j+1];
                          arrays[j+1] = temp;
                      }
                  }
              }
              System.out.println(Arrays.toString(arrays));
          }
      

    稀疏数组

    • 当一个数组中大部分元素为0,或者为同一值得数值时,可以使用稀疏数组保存
    • 稀疏数组的保存方式
      1. 记录数组一共几行几列,有多少个不同值
      2. 把不同值的元素记录和行列记录在小规模数组中,以缩小程序的规模
  • 相关阅读:
    C++之queue模板类
    Longest Valid Parentheses
    Longest Substring Without Repeating Characters
    Subsets,Subsets II
    Unique Paths
    Letter Combinations of a Phone Number
    Restore IP Addresses
    [string]Roman to Integer,Integer to Roman
    [string]Reverse Words in a String
    [string]Regular Expression Matching
  • 原文地址:https://www.cnblogs.com/blackBlog/p/13451223.html
Copyright © 2011-2022 走看看