数组相关知识

数组的声明

注意:

1.数组的名称要按照标识符的命名规则

2.一个数组只能保存一种数据类型

3.new 关键字表示在内存中开辟空间来保存数据

第一种声明:

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		//声明数组的第一种方式,该数组可以保存5个int类型的数据
		int [] nums =new int[5];
		//取得数组的长度
		System.out.println(nums.length);//5
	}
}

第二种声明:

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		//声明数组的第二种方式,该数组可以保存6个int类型的数据
		int [] nums =new int[]{1,2,3,4,5,6};
		//取得数组的长度
		System.out.println(nums.length);//6
	}
}

第三种声明:

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		//声明数组的第三种方式,该数组可以保存7个int类型的数据
		int [] nums ={1,2,3,4,5,6,7};
		//取得数组的长度
		System.out.println(nums.length);//7
	}
}

数组的内存分配结构

通过“数组名【下标】”的方式去访问,

取得数组中的所有元素

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		int [] nums =new int[]{1,2,3,4,5,6,7};
		for (int i=0;i<nums.length ;i++ )
		{
             System.out.print(nums[i]+",");
		}
	}
}

给数组赋值,把下标为偶数的数组扩大100倍

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		int [] nums =new int[]{1,2,3,4,5,6,7};
		for (int i=0;i<nums.length ;i++ )
		{
             if (i%2==0)
             {
				 nums[i]=nums[i]*100;
             }
			 System.out.print(nums[i]+",");
		}
	}
}

使用while循环输出数组的元素

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		int [] nums =new int[]{1,2,3,4,5,6,7};
		for (int i=0;i<nums.length ;i++ )
		{
             if (i%2==0)//赋值
             {
				 nums[i]=nums[i]*100;
             }
		}
		int footer=0;//读取
		while (footer<nums.length)
		{
			System.out.print(nums[footer]+",");
				footer++;
		}
	}
}

二维数组的内存分配结构

二维数组的声明

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		int [] [] arr ={{1,2),{3,4},{5,6}};
	}
}

二维数组的声明

第一种方式

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		//声明一个二维数组
		double [][] nums ={{1,2},{3,4},{5,6},{7,8}};
		//遍历一个二维数组
		for (int i=0;i<nums.length ;i++ )//只能遍历外层数组
		{
			for (int j=0;j<nums[i].length ;j++ )//遍历内层数组
			{
				System.out.print(nums[i][j]+",");
			}
		}
	}
}

第二种方式

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		//声明一个二维数组
		double [][] nums =new double[3][2];
		//为数组赋值
		nums[0][0]=1;
	    nums[0][1]=2;
        nums[1][0]=3;
        nums[1][1]=4;
        nums[2][0]=5;
        nums[2][1]=6;
		//遍历一个二维数组
		for (int i=0;i<nums.length ;i++ )//只能遍历外层数组
		{
			for (int j=0;j<nums[i].length ;j++ )//遍历内层数组
			{
				System.out.print(nums[i][j]+",");
			}
		}
	}
}

第三种方式

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		//声明一个二维数组
		double [][] nums =new double[3][];
		//为数组赋值
		nums[0][0]=1;
	    nums[0][1]=2;
        nums[1][0]=3;
        nums[1][1]=4;
        nums[2][0]=5;
        nums[2][1]=6;
		//遍历一个二维数组
		for (int i=0;i<nums.length ;i++ )//只能遍历外层数组
		{
			for (int j=0;j<nums[i].length ;j++ )//遍历内层数组
			{
				System.out.print(nums[i][j]+",");
			}
		}
	}
}
Exception in thread "main" java.lang.NullPointerException
        at Hello.main(Hello.java:8)

说明我们的程序访问了一个不存在的数组。

只创建了外层数组,内层数组不存在。

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		//声明一个二维数组
		double [][] nums =new double[3][];
		for (int i=0;i<nums.length ;i++ )
		{
			nums[i]=new double[i+1];
		}
		//为数组赋值
		nums[0][0]=1;
	    nums[1][0]=2;
        nums[1][1]=3;
        nums[2][0]=4;
        nums[2][1]=5;
		nums[2][2]=6;
		//遍历一个二维数组
		for (int i=0;i<nums.length ;i++ )//只能遍历外层数组
		{
			for (int j=0;j<nums[i].length ;j++ )//遍历内层数组
			{
				System.out.println(nums[i][j]+",");
			}
		}
	}
}

第四种方式

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		//声明一个二维数组
		double [][] nums =new double[][]{{1,2},{3,4},{5,6}};
		//遍历一个二维数组
		for (int i=0;i<nums.length ;i++ )//只能遍历外层数组
		{
			for (int j=0;j<nums[i].length ;j++ )//遍历内层数组
			{
				System.out.println(nums[i][j]+",");
			}
		}
	}
}

加强for循环实现遍历

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		//声明一个数组
		int [] nums ={2,3,4,56,213,90};
		//加强for循环遍历数组
		for (int temp:nums )
		{
			System.out.print(temp+",");	
		}
	}
}

数组越界异常

冒泡排序

比如说一个数组{32,8,64,10,5}实现升序排序(按照从小到大的排序)。

public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		int [] arr ={32,8,64,10,5};
		//对数组进行排序
		for (int i=0;i<arr.length-1 ;i++ )
			//控制比较的轮数的循环
		{
			for (int j=0;j<arr.length-i-1 ;j++ )
				//控制每轮比较的次数
			{
				if (arr[j]>arr[j+1])
					//如果前面一个数大于了后面一个则交换位置
				{
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
		}
                   //输出排序后的数组
				   for (int temp:arr)
		{
					   System.out.print(temp+",");
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值