java第六章

---------数组是一种数据类型,是引用类型

  • 使用方法1-动态初始化

数组的定义

数据类型 数组名[]=new 数据类型[大小]

数组引用(使用/访问/获取数组元素)

数组名[下标/索引/index]比如:你要使用a数组的第3个数 a[2],数组的下标从0开始

快速入门案例:循环输入5个成绩,保存到double数组,并输出

import java.util.Scanner;
public class array02{
	public static void main(String[] args){
		double scores[] = new double[5];//创建一个double数组,大小为5
		
		Scanner myScanner = new Scanner(System.in);//循环输入,scores.length表示数组的大小/长度
		for( int i =0;i<scores.length;i++){
			System.out.println("请输入第" + (i+1) + "个元素的值");
			scores[i]=myScanner.nextDouble();//从键盘得到的东西放进scores[i]里面去
		}


		System.out.println("==数组的元素/值的情况如下:===");
		for( int i =0;i<scores.length;i++){
			System.out.println("第" + (i+1) + "个元素的值=" + scores[i]);
		}
    }
}
  • 使用方法2-动态初始化

先声明数组

语法:数据类型 数组名[];也可以 数据类型[] 数组名;

int a[];或者int [] a;

创建数组

语法:数组名=new 数据类型[大小];

a=new int[10];

 

import java.util.Scanner;
public class array02{
	public static void main(String[] args){
	char[] chars = new char[26];//定义一个数组
	for(int i=0;i<chars.length;i++)	{//循环26次
		chars[i]=(char)('A'+i);//'A'+i是int,需要强制转换
	}
	System.out.println("===chars数组===");
	for( int i = 0; i< chars.length;i++){
		System.out.print(chars[i] + " ");
	
	}
    }
}

import java.util.Scanner;
public class array02{
	public static void  main(String[] args){
	int[] arr = {4,-1,9,10,23};
	int max = arr[0];
	int maxIndex = 0;//用来存储最大值的下标
	for(int i = 1;i<arr.length;i++){
		if(max<arr[i]){
			max = arr[i];
			maxIndex=i;

		}
	}
	System.out.println("max=" + max + " maxIndex" + maxIndex);
    }
}

import java.util.Scanner;
public class array02{
	public static void  main(String[] args){
	int[] arr = {4,-1,9,10,23};
	int sum = 0;
	int aver;
	for(int i = 0;i<arr.length;i++){
		sum +=arr[i];
		}
	aver = sum / arr.length;
	System.out.println("sum=" + sum + " aver=" + aver);
    }
}

值拷贝和值传递和引用传递的区别

//数组赋值机制
public class arrayassign{
	public static void  main(String[] args){//编写一个main方法
		//把arr1赋给arr2,数组在一般情况下是引用地址,
		//赋的值是地址,赋值方式为应用赋值
		//是一个地址,arr2变化会影响到arr1
	  int[] arr1 = {1,2,3};
	  int[] arr2 = arr1;
	  arr2[0] = 10;

	  System.out.println("====arr1的元素====");
	  for(int i = 0;i < arr1.length; i++){
	  	System.out.println(arr1[i]);//10,2,3
	  }
	  System.out.println("====arr2的元素====");
	  for(int i = 0;i < arr2.length; i++){
	  	System.out.println(arr2[i]);//10,2,3
	  }
    }
}

 

//数组拷贝
public class arraycopy{
	public static void  main(String[] args){//编写一个main方法
	  int[] arr1 = {10,20,30};
	  int[] arr2 = new int[arr1.length];//创建new一个新的数组arr2,开辟新的数据空间
	 
	  for(int i= 0;i < arr1.length;i++){//遍历arr1,将每个元素拷贝到arr2对应的元素位置
	  	arr2[i] = arr1[i];
	  }
	  arr2[0] = 100;//修改arr2[0]的值
	  System.out.println("====arr1的元素====");
	  for(int i = 0; i < arr1.length;i++){
	  	System.out.println(arr1[i]);//输出arr1
	  }
	  System.out.println("====arr2的元素====");
	  for(int i = 0; i < arr2.length;i++){
	  	System.out.println(arr2[i]);//输出修改后的arr2
	  }
	  
    }
}

 使数组中的数字前后对调

//方法1:
public class arrayReverse02{
	public static void  main(String[] args){//编写一个main方法
	  int[] arr = {11,22,33,44,55,66};//定义数组
	  int temp = 0;
	  int len = arr.length;
	  for(int i = 0 ;i<len / 2; i++){
	  	 temp = arr[len-1-i];
	  	arr[len-1-i] = arr[i];
	  	arr[i] = temp;
	  }
	  for(int i = 0 ;i<len; i++){
	  	 System.out.println(arr[i] + "\t");
	  }
	  
    }
}
//方法2
public class arrayReverse02{
	public static void  main(String[] args){//编写一个main方法
	  int[] arr = {11,22,33,44,55,66};//定义数组
	  //1.创建一个新的数组arr2,大小为arr.length
	  //2.逆序遍历arr,将每个元素拷贝到arr2的元素中(顺序拷贝)
	  //3.建议增加一个循环变量 j-> 0 -> 5
	  int[] arr2 = new int[arr.length];
	  //逆序遍历arr
	  for(int i = arr.length-1,j = 0 ;i>=0; i--,j++){
	  	 arr2[j] = arr[i];
	  }
	  //4.当for循环结束,arr2就是一个逆序的数组
	  //5.让arr指向arr2数据空间,此时arr原来的数据就没有变量引用
	  //会被当做辣鸡销毁
	  arr = arr2;
	  	  System.out.println("====arr的元素情况====");
	  //6.输出arr
	  	  for(int i = 0;i< arr.length;i++){
	  	   System.out.println(arr[i] + "\t");

	  	  }
	  
    }
}

给数组扩容

public class ArrayAdd{
	public static void  main(String[] args){//编写一个main方法
	 int[] arr = {1,2,3};//定义初始数组,下标0-2
	 int[] arrNew = new int[arr.length+1];//定义一个新的数组,且长度是arr.length+1,即4
	 for(int i = 0;i< arr.length; i++){//遍历arr数组,依次将arr的元素拷贝到arrNew数组
	  	 arrNew[i] = arr[i];
	  }
	  arrNew[arrNew.length-1] = 4;//将第4个元素赋值为4
	  arr = arrNew;//让arr指向arrNew,那么原来的数组就被销毁了
	  System.out.println("====arr扩容之后元素情况====");
	  for(int i = 0;i<arr.length; i++){
	  	 System.out.print(arr[i] + "\t");//输出拷贝后的arr数组
	  }
    }
}
//询问用户是否还需要添加元素
import java.util.Scanner;//引一个包
public class ArrayAdd02{
	public static void  main(String[] args){//编写一个main方法
	 
	 Scanner myScanner = new Scanner(System.in);//new一个接收器
	 int[] arr = {1,2,3};//定义初始数组,下标0-2

	 do{
	 int[] arrNew = new int[arr.length+1];//定义一个新的数组,且长度是arr.length+1,即4
	 for(int i = 0;i< arr.length; i++){//遍历arr数组,依次将arr的元素拷贝到arrNew数组
	  	 arrNew[i] = arr[i];//将arr的元素拷贝到arrNew里去
	  }
		  System.out.println("请输入你要添加的元素");
		  int addNum = myScanner.nextInt();

		  arrNew[arrNew.length-1] = addNum;//把addNum赋给arrNew最后一个元素
		  arr = arrNew;//让arr指向arrNew,那么原来的数组就被销毁了

		  System.out.println("====arr扩容之后元素情况====");

		  for(int i = 0;i<arr.length; i++){
		  	 System.out.print(arr[i] + "\t");//输出拷贝后的arr数组
		  }
		
		  System.out.println("是否继续添加 y/n");//问用户是否要继续添加
		  char key = myScanner.next().charAt(0);//定义一个字符类型的key来接收键盘输入的字符
		  if(key == 'n'){//如果输入n,那就退出
		  	break;
	  }

	}while(true);
	System.out.println("你退出了程序");
    }
}

 

import java.util.Scanner;//引一个包
public class ArrayReduce{
	public static void  main(String[] args){//编写一个main方法
	 
	 Scanner myScanner = new Scanner(System.in);//new一个接收器
	 int[] arr = {1,2,3,4,5};//定义初始数组,下标0-2

	 do{
	 int[] arrNew = new int[arr.length-1];//定义一个新的数组,且长度是arr.length-1

	 for(int i = 0;i< arr.length-1; i++){//遍历arr数组
	  	 arrNew[i] = arr[i];//将arr的(arr.length-1)个元素拷贝到arrNew里去
	  }
		  
		  arr = arrNew;//让arr指向arrNew,那么原来的数组就被销毁了

		  System.out.println("====arr缩容之后元素情况====");

		  for(int i = 0;i<arr.length-1; i++){
		  	 System.out.print(arr[i] + "\t");//输出减少后的arr数组
		   }
		   if(arr.length>1)
		   {
		   		System.out.println('\n'+"是否继续减少 y/n");//问用户是否要继续添加
		  		char key = myScanner.next().charAt(0);//定义一个字符类型的key来接收键盘输入的字符
		  		if(key == 'n'){//如果输入n,那就退出
		  		break;
		   	}
		
	 		}
	 		else if(arr.length==1){
	System.out.println("不能再缩减了!!");

	 		}

	}while(true);
	System.out.println("你退出了程序");
    }
}

 以上代码是我自己写的,如果有错误希望可以帮忙纠正。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值