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];

  • 相关阅读:
    java基础部分的一些有意思的东西。
    antdvue按需加载插件babelpluginimport报错
    阿超的烦恼 javaScript篇
    .NET E F(Entity Framework)框架 DataBase First 和 Code First 简单用法。
    JQuery获得input ID相同但是type不同的方法
    gridview的删除,修改,数据绑定处理
    jgGrid数据格式
    Cannot read configuration file due to insufficient permissions
    Invoke action which type of result is JsonResult on controller from view using Ajax or geJSon
    Entity model数据库连接
  • 原文地址:https://www.cnblogs.com/paulwinflo/p/7815000.html
Copyright © 2011-2022 走看看