🧡数组基本知识🧡

简介: 数组可以看成是一个容器,容器是用来存放数据的。数组是存放同一类型的数据的容器。 注意:数组的长度是不可变的

函数


从返回值类型上来区分:
       无返回值    修饰符  void  方法名称(){}
       有返回值    修饰符  返回值类型  方法名称(){ return 返回值类型 }
   从参数上来区分:
       无参数   修饰符  void/返回值类型 方法名称(){}
       有参数   修饰符  void/返回值类型 方法名称(参数列表){}
   函数重载特性:
       在一个类中,如果出现方法名称相同,参数个数不同或者参数类型不同的情况就叫做重载。记住重载只看参数个数和参数类型,与返回值无关,与修饰符无关。
复制代码

数组


数组可以看成是一个容器,容器是用来存放数据的。数组是存放同一类型的数据的容器。
   注意:数组的长度是不可变的
   格式:
       类型[] 数组名称 =new 类型[指定长度] ;
       类型[] 数组名称 =new 类型[]{值1,值2,值3.....};
       类型[] 数组名称 ={值1,值2....};
   数组是长度固定的有连续性的存储数据的容器,它们都会有下标,可以通过下标来找到对应的值。
  Java种的内存分配:
     jvm把Java代码分为了5快区域,这样可以方便jvm去管理我们的Java代码。
     1.栈空间(stack):存储在类或者方法中定义的局部变量 (作用域范围小,用完就销毁)
     2.堆空间(heap):凡是new的对象 都存放在此空间中,此空间 会分配一个内存地址。
     3.方法区(method area):存放与class相关的属性和值。
     4.本地方法栈(Native Method Stack):与操作系统相关
     5.寄存区(pc Register):与cpu相关。
复制代码


基本数据类型和引用数据类型


在Java中类型分为了2大块,一块是基本数据类型 (八大)除了基本数据类型以外的所有的类型都叫做引用数据类型。
         基本数据类型在初始化的时候如果没有赋值他们都有默认值
           整数型:byte short int long 默认值0
           浮点型:float double 默认值0.0
           布尔类型:boolean 默认值为flase
           字符类型:char 默认值: '\u0000' 空格;
       引用数据类型在初始化的时候如果没有赋值的话,他们的默认值都是null
复制代码


数组的api


创建:
  1.动态初始化:初始化的时候,没有给数组的内容赋值
     /***
   * 动态初始化:初始化的时候没有给它赋值,程序员可以动态的给它赋值。
   */
  public class initone {
      public static void main(String[] args) {
           int[] arr =new int[10];
           arr[0]=10;
           arr[2]=15;
      }
  }
  2.静态初始化:初始化的时候,直接给数组的内容赋值
   /***
   * 初始化的时候直接赋值
   */
  public class inittwo {
      public static void main(String[] args) {
          int[] arr =new int[]{1,5,10};
      }
  }
  赋值:
     数组名[下标]=xxx;
  获取长度:  
     数组提供了一个length属性来供我们获取它的长度
      System.out.println(arr.length);
  获取元素:
      System.out.println(arr[1]);
  遍历元素:
    /***
     * 原始for循环
     */
    int[] arr =new int[]{1,10,8,15,22};
    for(int i=0;i<arr.length;i++){
        System.out.println(arr[i]);
    }
    /***
     * 增强for
     */
    for(int i:arr){
        System.out.println(i);
    }
复制代码


异常:异常是指在程序允许过程中出现的错误,一般情况异常分为两种,一种是编译的时候就能查找出来的异常,另外一种是必须执行的时候才会出现的异常,所以说异常一般分为编译时异常和运行时异常。


在数组中常见的异常:
    1.角标越界异常:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    2.空指针异常:Exception in thread "main" java.lang.NullPointerException
复制代码


数组排序:


冒泡排序:
  package com.ly.array;
  /**
   * 冒牌排序
   */
  public class maopaosort {
      public static void main(String[] args) {
          int[] arr =new int[]{10,2,5,8,1,22};
          for(int x=0;x<arr.length;x++){
              for(int y=0;y<arr.length-1-x;y++){
                     int temp=0;
                     if(arr[y]>arr[y+1]){
                         temp=arr[y];
                         arr[y]=arr[y+1];
                         arr[y+1]=temp;
                     }
              }
          }
          for(int i:arr){
              System.out.print(i+"\t");
          }
      }
  }
 选择排序:
   public static void main(String[] args) {
    int[] arr =new int[]{10,2,8,19,5,7,3};
    for(int i=0;i<arr.length-1;i++){
        /***
         * i=0  y=1  y=2 y=3 y=4 y=5 y=6
         * i=1  y=2 y=3 y=4 y=5 y=6
         * i=2  y=3 y=4 y=5 y=6
         * i=3  y=4 y=5 y=6
         * i=4  y=5 y=6;
         * i=5  y=6
         */
        for(int y=i+1;y<arr.length;y++){
            int temp=0;
            /***
             * 下标0和下标1 去比 最大值赋值给1 最小值0
             * 下标0和下标2 去比 最大值赋值给2 最小值0
             * 下标0 和下标3去比 最大值赋值给3 最小值0
             *
             * ....
             * 下标0 和下标6去比较
             *  下标1 和下标2 去比较
             *  下标1 和下标3去比较
             *  下标1 和下标4去标胶
             *  ...下标1和下标6去比较
             */
            if(arr[i]>arr[y]){
                temp=arr[i];
                arr[i]=arr[y];
                arr[y]=temp;
            }
        }
    }
    for(int x:arr){
        System.out.print(x+"\t");
    }
 }
jdk还给我们提供了一个帮助类,来供我们快速的排序,这个帮助类就是Arrays,排序的方法就是sort();
    public static void main(String[] args) {
        int[] arr =new int[]{18,6,2,15,3};
        //排序
        Arrays.sort(arr);
        /**
         * 升序
         */
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        System.out.println("--------------------------------");
        /***
         * 降序
         */
        for(int i=arr.length-1;i>=0;i--){
            System.out.println(arr[i]);
        }
    }
复制代码


二维数组:二维数组就是数组里面村的内容还是数组,这种数据就是二维数组。


二维数组的初始化:
           动态的初始化:
             int[][] arr =new int[2][3];
             int[] ar1 =new int[]{1,3,5};
             int[] ar2 =new int[]{2,6,9};
             arr[0]=ar1;jaca
             arr[1]=ar2;
           静态的初始化:
             int[][] arr=new int[][]{{1,3,5},{2,6,9}};
           获取:
             首先通过外围数组的下标获取到内维数组,然后在通过内维数组的下标找到具体的值;
             arr[0][2];
           遍历二维数组:



相关文章
|
1月前
第一章数组
第一章数组
25 0
|
4月前
|
存储 Java 索引
Java数组操作:基础与进阶指南
Java数组操作:基础与进阶指南
|
6月前
|
算法 Java 程序员
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
57 0
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
|
6月前
|
存储 C语言
C语言从入门到实战——数组和指针的强化练习题
C语言中指针和数组有着密切的关系,因为数组名在C语言中可以看作是一个指针常量。 指针是一个变量,存储的是另一个变量的地址。可以通过指针来访问另一个变量的值。指针变量可以存储任何类型的地址,包括数组的地址。 数组是一组相同类型的数据元素的集合。在C语言中,可以用数组名来表示整个数组,在这个意义上,数组名看起来像一个指针变量。实际上,数组名在C语言中可以看作是一个指向数组首元素的指针常量。
62 0
|
6月前
|
存储 编译器 C++
第四章:C++中的数组
第四章:C++中的数组
35 1
|
6月前
|
存储 算法 Serverless
第六章:数组
第六章:数组
76 0
|
存储 搜索推荐 算法
数组掌握秘籍:Java数组进阶指南
数组掌握秘籍:Java数组进阶指南
|
存储 C语言
C语言——数组和指针 的基础知识(学习分享)(二)
C语言——数组和指针 的基础知识(学习分享)(二)
85 0
|
编译器 C语言
C语言——数组和指针 的基础知识(学习分享)(一)
C语言——数组和指针 的基础知识(学习分享)(一)
95 0
|
编译器 C语言
【C】数组——知识点大全(简洁,详细)(二)
【C】数组——知识点大全(简洁,详细)