zoukankan      html  css  js  c++  java
  • 【java】一维数组

    数组概念:

    同一种类型数据的集合,实际数组也是一个容器。

    定义方式:

    //定义方法1:元素类型 [] 数组名 =new 元素类型 [数组元素个数或数组长度]
    如 int [] arry =new int [3]
    //定义方法2:数组静态初始化方式,一般不指定数组的长度,但是系统为自动决定。元素的值确定时,一般使用这种方式初始化
    如 String[] computers = {"Dell", "Lenovo", "Apple", "Acer"};或 String[] computers = new String[] {"Dell", "Lenovo", "Apple", "Acer"}

    数组存储方式:

    栈内存:用于存储局部变量,当数据使用完毕,所占空间会自动释放,如图所示:

    堆内存:存储数组和对象,通过new建立的实例都存放在堆内存中。

        特点:1)每个数组都有内存地址。2)数组中元素默认都有初始化值。int类型默认为0,double类型默认为0.0,bool类型默认为false 3)实体不在使用,会把实例设置为null,系统会不定期呗垃圾回收期回收。

    如图所示,arry和arrx都为数组的引用,他们指向同一个数组,所操作的也是同一个实体。他们存放在栈内存里面,所存储的内容为数组的存储地址0x0064。数组第一个元素被赋值为0,其他元素都是默认值0.

    class  ArryDemo 
    {
    	public static void main(String[] args) 
    	{
    		int[] arry=new int[3]; ##定义一个数组
    		arry[0]=55;
    		arry[1]=11;
    		System.out.println(arry);##打印该数组的内存地址:[I@659e0bfd
    		System.out.println(arry[2]);##打印数组第三个元素,因为第三个元素没有被赋值,因此会使用默认值0
    		for (int i=0; i<arry.length; i++)##遍历arry数组
    		{
    			System.out.println(arry[i]);
    		}
    		int[] arry1=arry;##也就是arry和arry1两者引用都指向相同的数组。
    		arry[2]=33;##arry##改变了数组
    		System.out.println(arry1[2]);##arry1也跟着改变
    	}
    }
    


    选择排序和冒泡排序
    class BubbleDemo 
    {
    	public static void main(String[] args) 
    	{
    		int [] arry={3,2,4,5,1,9,6,4};
    		bubbleSort(arry);
    		for (int i=0;i<arry.length ; i++)
    		{
    			System.out.println(arry[i]);
    		}
    		
    	}
    
    	public static void bubbleSort(int [] arry)//!!!! 操作数组时,是无返回的,因为就一个数组,只对这个数组进行操作,不需要返回
    	{
    		for	(int x=0;x<arry.length-1;x++)//因为比较次数理解为间隔.
    		{
    			for(int y=0;y<arry.length-x-1;y++)//-x是让每次循环减去最后一个已经确定最大的元素,-1是因为以0开始
    			{
    				
    				if (arry[y]>arry[y+1])
    				{
    					int tmp=arry[y];
    					arry[y]=arry[y+1];
    					arry[y+1]=tmp;
    				}
    			}
    		}
    	}
    }

     public static void selectSort(int [] arry)
        {
            for (int x=0;x<arry.length-1;x++)//比较次数理解为间隔
            {
                for(int y=1+x;y<arry.length;y++)//移位的进行比较
                {
                     
                    if (arry[x]>arry[y])
                    {
                        int tmp=arry[x];
                        arry[x]=arry[y];
                        arry[y]=tmp;
                    }
                }
            }
        }
    

      

    错误类型:

    ArrayIndexOutOfBoundsException:操作数组时,场景:访问到了不存在的脚标

    NullPointerException:空指针异常,场景:当引用没有任何指向,值为null时,该引用还在操作实体

     二维数组定义:

    1.int[][]arry=new int[3][2];//定义了 一个二维数组,二维数组有三个一维数组,每个一维数组含有2个元素

    2.int[][]arry=new int[3][];

    //每一维数组默认初始化值为null,可以对这三个数组分别进行初始化
    arry[0]=new int[3];
    arry[1]=new int[4];
    arry[2]=new int[2];

  • 相关阅读:
    staticmethod & classmethod
    stanford Python
    LD_LIBRARY_PATH
    Centos7.2 errors
    theano profile
    电梯开关量GPIO配置记录
    定时器配置 中断配置 GPIO
    电梯开发进度贴
    Makefile编写学习摘要
    数据挖掘聚类算法--Kmeans
  • 原文地址:https://www.cnblogs.com/paulwinflo/p/7815000.html
Copyright © 2011-2022 走看看