zoukankan      html  css  js  c++  java
  • java 数组

    1.数组
    同一种类型数据的集合,其实数组就是一个容器。
    数组的好处是可以自动给数组中的元素从0开始编号,方便操作这些元素。

    格式1
    元素类型[]数组名=new 元素类型[元素的个数或者数组的长度]
    格式2
    元素类型[]数组名=new 元素类型[]{1,2,3}这种格式为数组的静态初始化
    元素类型[]数组名={1,2,3}

    内存结构
    java程序在运行时,需要在内存中分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
    栈内存
    用于存储局部变量,当数据使用完,所占空间会自动释放。
    堆内存
    数组和对象,通过new建立的实例都存放在堆内存中
    每一个实体都有内存地址值
    实体中的变量都有默认初始化值
    实体不在被使用,会在不确定的时间内被垃圾回收器回收
    以及方法区,本地方法区,寄存器三种共五种内存空间。

    对于引用类型变量,变量实体是存在堆内的,当变量被引用赋值的时候是将该变量的内存地址赋予到局部变量上。
    对于 int []arry=new int[3];
    前半部分是定义一个数组类型的变量,存储在栈内存中,后面的new 语句是声明一个引用型变量,在堆内存中开辟内存,=将堆内存中的内存地址赋予栈内存里的数组类型供其引用。当两个数组类型变量同时指向一个引用类型变量时,为其中一个数组类型变量赋值,另一个也会跟着被重新赋值。每new一次就新建一个引用型变量,。

    数组中常见的问题
    1空指针异常,2引用超出范围

    数组中常见操作
    遍历

    int []arry={1,2,3}
    public static void printArry(arry []) {
      for(int i=0;i<arry.length;i++){
        if(i!=arry.length-1)
          System.out.println(arry[i]+";");
        else
          System.out.println(arry[i]);
      }
    
    }

    获取最值

    public static void getMax(int []arry){
      int max=0;
      for(int i=0;i<arry.length;i++){
        if(arry[i]>arry[max])
          arry[max]=arry[i];
        }
        return arry[max];
      }
    }


    选择排序

    public static void selectSort(int[]arry){
      for(int x=0;x<arry.length-1;x++){
        for(int y=x+1;y<arry.length;y++){
          if(arry[x]>arry[y]){
            int temp=arry[x];
            arry[x]=arry[y];
            arry[y]=temp;
          }
        }
      }
    
    }

    冒泡排序

    public static void selectSort(int[] arry){
      for(int x=0;x<arry.length-1;x++){
        for(int i=0;i<arry.length-x-1;i++){
          if(arry[i]>arry[i+1]){
            int temp=arry[y];
            arry[y]=arry[y+1];
            arry[y+1]=temp;
          }
        }
      }    
    }


    以上数组位置置换功能的抽取

    public static void swap(int []arry,int a ,int b){
      int temp=arry[a];
      arry[a]=arry[b];
      arry[b]=temp;
    }


    数组的查找

    public static int search(int []arry,int key){
      for(int i=0;i<arry.length;i++){
        if(arry[i]==key){
          return i;
        }
      }
      return -1;//数组中不存在的时候返回-1
    }


    对于有序数组的折半查找

    public static int Search(int[]arry,int a){
      int min=0,max=arry.length-1;
      int mid=(arry.length-1)/2;
      while(arry[mid]!=a){
        if(arry[mid]>a){
          max=mid-1;
        }else if(arry[mid]<a){
          min=mid+1;
        }
        if(min>max)
          return -1;
          mid=(max+min)/2;
       }
      return mid;
    }

    二维数组
    矩形数组
    int [][]arry=new int[3][2]
    锯齿形数组
    int [][]arry=new int[2][]
    arry[0]=new int[3];
    arry[1]=new int[4];
    二维数组的求和

    int sum=0;
    for(int x=0;x<arry.length;x++){
      for(int y=0;y<arry[x].length;y++){
        sum+=arry[x][y];
      }
    }
  • 相关阅读:
    java开发中的常见类和对象-建议阅读时间3分钟
    周末学习-泛型-就是传入什么类型就是什么类型-花了一个半小时
    实习第二天-String对象的不可变性-未解决
    实习第二天-java参数传递-精华在文章最后2句话
    实习第二天-对象-对象引用-引用变量-精-精-精-下雨天
    实习第一天:try和catch的使用
    实习第二天-今年第一场雨-方法的重载(马上想到println()函数和abs(函数))
    实习第一周第一天:接口 extends是继承类,implement是实现接口,原接口里面的方法填充,方法名也是不变,重写override是父类的方法名不变,把方法体给改了
    实习第一天:static 声明的 变量和 方法
    JavaWeb学习总结(二)-修改Tomcat服务器的端口(半年之后再总结)
  • 原文地址:https://www.cnblogs.com/ss561/p/4576280.html
Copyright © 2011-2022 走看看