• Java基础知识学习03-数组


    数组

    定义格式:数据类型[ ]  数组名 = new  数据类型[元素个数或数组长度];

       说明数组在创建过程中内存的分配情况

       JVM对自己的内存进行了划分,分成了5个区域:

    寄存器:内存和CPU之间。

    本地方法栈JVM调用了系统中的功能。

    方法和数据共享:运行时期,class文件进入的地方。

    方法栈:所有的方法运行的时候,进入的内存。

    :存储的是容器和对象。

       如:int[] x = new int[];

        int[] x :  声明了一个变量x,该变量的类型为int[],即一个int类型的数组。变量x会占用一块内存单元,它没有被分配初始值。内存中的状态如下图所示。

      new int[] :创建了一个数组,将数组的地址赋值给变量x。在程序运行期间可以使用变量x来引用数组,这时内存中的状态会发生变化,如下图所示

    在定义数组时只指定数组的长度,由系统自动为元素赋初值的方式称作动态初始化

    静态初始化:

    1、类型[] 数组名 = new 类型[]{元素,元素,……};

    2、类型[] 数组名 = {元素,元素,元素,……};

    二维数组

     数组类型[ ] [ ]  数组名= new 数据类型[行的个数][列的个数];

    或者   数据类型[ ] [ ]  数组名;

             数组名=new  数据类型[行的个数][列的个数];

    如:int[][] arr = new int[3][4];

           int[][] arr = new int[3][];

           int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};

    数组常见问题(最值获取,数组遍历,数组排序)

    数组最值

    public class ArrayDemo05 {

    public static void main(String[] args) {

        int[] arr = { 4, 1, 6, 3, 9, 8 }; 

        int max = arr[0]; // 定义变量max用于记住最大数,首先假设第一个元素为最大值

        for (int x = 1; x < arr.length; x++) {

              if (arr[x] > max) { // 比较 arr[x]的值是否大于max

                 max = arr[x]; // 条件成立,将arr[x]的值赋给max

                 }

             }

    System.out.println("max=" + max); // 打印最大值

        }

    }

    数组遍历

    //遍历一维数组
       int[] arr1={1,3,5,2,4};
        for(int i=0;i<arr1.length;i++){
           System.out.println(arr1[i]);
       }
    System.out.println("------------------");
    //遍历二维数组
      int[][] arr2={{1,3,5,7,9},{2,4,6,8,10}};
      for(int i=0;i<arr2.length;i++){
           for(int j=0;j<arr2[i].length;j++){
                System.out.println(arr2[i][j]);
             }
       }

    数组异常(数组越界异常和空指针异常) 

    数组越界异常

    每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程序会报错

      public class ArrayDemo06 {

            public static void main(String[] args) {

            int[] arr = new int[4]; // 定义一个长度为4的数组

           System.out.println("arr[0]=" + arr[4]); // 通过4访问数组元素

        }

     }

    空指针异常

    在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常

      public class ArrayDemo07 {

           public static void main(String[] args) {

               int[] arr = new int[3];

              arr[0] = 5; // 为数组的第一个元素赋值

              System.out.println("arr[0]=" + arr[0]); 

              arr = null; // 将变量arr置为null

             System.out.println("arr[0]=" + arr[0]); // 访问数组的元素

         }

     }

     

     方法

    方法定义格式:

    修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){

    执行语句

    ………

    return 返回值;

    }

    方法的重载

    1.必须在同一个类中
    2.方法名相同
    3.参数列表不同
    4.与方法的修饰符无关,与返回值无关

    值传递与引用传递的问题

    public class OverLoad
    {
        public static void main(String[] args)
          {
               //值传递与引用传递的问题
               int a=2;
               int b=3;
              System.out.println(a+","+b);
              change(a,b);
             System.out.println(a+","+b);
             System.out.println("-----------");
             int[] arr={2,3};
             System.out.println(arr[0]);
             System.out.println(arr[1]);
             change2(arr);
             System.out.println(arr[0]);
             System.out.println(arr[1]);
       }
        public static int change(int c,int d){
        c=0;
        d=0;
       return c;
       }
        public static void change2(int[] a){
          a[0]=5;
          a[1]=4;
         }
       }

    运行结果:

  • 相关阅读:
    java实现LFU算法
    2.1 测试函数-Rastrigin函数
    VM虚拟机如何与主机共享文件夹
    .bashrc文件和.bash_profile文件的区别
    1.2 准备工作
    1.1 JSOP架构
    vue中页面跳转拦截器的实现方法
    Javascript性能优化阅读笔记
    理解 e.clientX,e.clientY e.pageX e.pageY e.offsetX e.offsetY
    Vue.directive()的用法和实例
  • 原文地址:https://www.cnblogs.com/Java-125/p/8616200.html
Copyright © 2020-2023  润新知