第六章_数组

定义数组

数组(Array)标志是[ ] ;
用于储存多个相同类型数据的集合。
想要获取数组中的元素值,可以通过下标来获取,下标是从0开始的

数组的创建方式有两种:

			动态初始化: int[] a = new int[5];
			
			静态初始化: int[] b = new int[]{1,2,3,4,5};
			
					    int[] c = {1,2,3,4,5};	
练习:向数组中存入hello
	public static void main(String[] args) {
		//1.创建数组
				//静态创建
				char [] c = new char[] {'h','e','l','l','o'};
				char [] c2= {'h','e','l','l','o'};
				//动态创建
				char [] c3= new char[5];
				c3[0]='h'; //给第一个元素赋值。
				c3[1]='e'; //给第二个元素赋值。
				c3[2]='l'; //给第三个元素赋值。
				c3[3]='l'; //给第四个元素赋值。
				c3[4]='o'; //给第五个元素赋值。
			System.out.println(c);
			System.out.println(c2);
			System.out.println(c3);
			System.out.println(c.length);	length属性,用来打印数组的长度。
	}		

遍历数组–也可以叫数组的循环

.length属性–打印数组的长度
数组一旦创建,长度不可变
允许0长度的数组

数组的遍历------其实就是一个循环体

for(1.从下标为0的位置开始2.下标的取值<数组的长度3.下标++){
 							循环体;
		}
  练习1:输出每个月的天数
	   //1.创建数组
	   int[]a= {31,29,31,30,31,30,31,31,30,31,30,31};
	   //数组的遍历------------------------------也可以叫数组的循环
	   for (int i = 0; i < a.length; i++) {
		System.out.println((i+1)+"月有"+a[i]+"天");a[i]指根据下标i获取a数组中元素的值
 
练习2. 遍历数组,存入110
		//1.创建数组  动态
	  int[] a =new int[10];
	  for (int i = 0; i < a.length; i++) {	//2. 遍历数组 给元素赋值
		a[i]=i+1;
 * int i =0,是指下标为0的位置开始
 * i < a.length 是指下标最大值小于数组的长度
 *i+1给每个元素赋值,i取值是0——9+1后是1——10.	 
 		 System.out.println(a);//[I@2ff4acd0  打印数组得到的是一个地址值,数组虽然被赋值,但直接打印并不能查看其内容 
	 	 //Arrays是数组的工具类,toString(m)----m是要把哪个数组的元素显示成一个字符串
	  	System.out.println(Arrays.toString(a));//赋值之后要想查看其元素,除了char类型,其他都需要使用Arrays工具类来实现

冒泡排序

冒泡排序:bubble sort是一种计算机科学领域的较简单的排序算法。

形式:

  		相邻位置比较,从小到大排序,如果小就往前换。

冒泡排序需要两层循环来实现:
第一层循环:控制比较的轮数,如果是5个数据,需要比较4次(5—1)
第二层循环:相邻比较 +交换顺序

	public static void main(String[] args) {
		//冒泡排序的代码实现:
		//1.创建一个无序数组
		int [] a = new int [10];
		for (int i = 0; i < a.length; i++) {
			a[i]=new Random().nextInt(100);
		}
		//2.调用method()排序
		int[] b =method(a);
		System.out.println(Arrays.toString(b));
	}
	//创建method()完成排序
	public static int[] method(int[] a) {
		//1.外循环控制比较轮数,假设N个数,需要比较N-1次
		for (int i = 0; i <a.length-1; i++) {
			//2.内循环:相邻比较,交换位置
			for (int j = 0; j < a.length-1; j++) {
				//相邻比较,a[j]代表前一个元素,a[j+1]代表后一个元素
				if (a[j]>a[j+1]) {
					//交换位置--首尾相连
					int t=a[j];
					a[j]=a[j+1];
					a[j+1]=t;
				}	
			return a;

数组的工具类使用

数组工具类Arrays
  1.Arrays.toString(数组名)--需要查看数组里的元素时使用

		把数组里的数据,用逗号连接成一个字符串。[1,值2,值3]
  		System.out.println(Arrays.toString(a));

  2.Arrays.sort(数组)---需要给数组排序时使用
  		对数组排序,从小到大排序。
  		对基本类型,使用快速排序算法,效率高。
  	 	对引用类型,使用合并排序算法。
  			int[] a = new int[]{21,25,98,64,71};
  			Arrays.sort(a);
 				System.out.println(Arrays.toString(a)); 

 	3.Arrays.copyOf(要复制的数组名,新的长度)---需要复制一个新数组时使用
  		把数组复制成一个 指定长度的新数组
  		新数组长度大于原数组,相当于复制并增加位置扩容
  			新数组长度小于原数组,相当于截取前一部分数据缩容
		int [] a= {1,2,3,4,5,6};
		要取一个新数组名,,因为数组一旦创建长度不可变,所以复制完产生的是一个新数组 

		int [] b1=Arrays.copyOf(a, 10);
		int [] b2=Arrays.copyOf(a, 3);

		System.out.println(Arrays.toString(b));//[1, 2, 3, 4, 5, 6, 0, 0, 0, 0]---扩容
		System.out.println(Arrays.toString(b2));//[1, 2, 3]---缩容
		

二维数组

	存放数组的数组--数组里存的还是数组的数据形式。

 二维数组的形式: 
     1.创建二维数组
         int [] [] a = new int[3][3];         
         int [] [] a = {{1,5,6},{7,5,8},{2,4,6}};   
       
 			2.遍历二维数组
		 	for (int i = 0; i < a.length; i++) {	
				for (int j = 0; j <a[i].length; j++) {
				}
}
		
案例:
	int [] [] a = {{1,5,6},{7,5,8},{2,4,6}};
	for (int i = 0; i < a.length; i++) {//遍历外围数组
		for (int j = 0; j <a[i].length; j++) {//遍历内围数组
				System.out.println(a[i][j]);
			}
		}

变量的扩展

变量的全面认识

概念:
 			可以改变的数,称为变量。
 			一般通过三部分来描述变量。变量类型 变量名 变量值
 			使用原则:就近原则   尽量控制在最小范围


 局部变量:
 		定义在方法里,或者局部代码块中
 		注意:必须手动初始化,来分配内存。
 		作用域也是在方法里或局部代码块里,方法运行完内存就释放了。
 

 成员变量
 			定义在类里,方法外
  		注意:不用初始化,也会自动初始化成默认值
  		作用域是在整个类中,类消失了,变量才释放


 八大基本类型的默认值:	
 			byte-----0
 			short----0
 			int------0
  			long-----0L
  			float----0.0F
  			double---0.0d
 			char-----\u0000 
 			boolean--false
 			String---null`在这里插入代码片`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如青春如烈火

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值