Java第一阶段(4)【 数组(一)】 11.9

数组的概念

就是一个容器,装很多数据

  1. 数组的容量(长度)是固定的,无法增加也无法减少
  2. 数组中的所有数据的数据类型必须一致
  3. 在java中被当做对象来使用
  4. 一维数组[] 二维数组[][]  多维…

创建数组

注意:在创建的时候就要规定这个数组存的是什么类型

1. 静态初始化:先给定数据与长度

  • int类型的一维数组类型:
    (完整版) int[] array = new int[]{1,2,3,4,5}; 
    (简约版) int[] array = {1,2,3,4,5};

System.out.print(array)   //此时如果输出 array,输出的值为 [I@1db9742
[I@1db9742:数组在内存中的地址值:
[I : 一维数组的int  @:分割   1db9742:16进制

  • 数组中的元素:
  1. 长度:数组名.length
  2. 访问数组中的某一个元素:array[ 位置/索引/角标 ] ( 起始都是从0开始 )
      数组第一个元素   array[ 0 ]
      数组最后一个元素  array[ array.length - 1 ]
  3. 使用循环来获取数组中的每一个元素(数组的遍历)
for(int a = 0; a < array.length ; a++){
	System.out.println(array[a]);
}

2. 动态初始化:先只给定长度,后续自行增加数据

  • (格式)int[] arr = new int[3]  //3代表 创建了一个长度为3的一维数组
数组类型 默认空值
int[] 0
char[] 空格
boolean[] false
String[] null
  • 引用数据类型的数组,动态初始化默认为null---空指针

java中,内存区域的划分

  1. 寄存器:内存运算储存效率最高(CPU)
  2. 本地方法区:给本地系统使用
  3. 方法区:加载类的文件、加载静态的参数,常量
  4. 栈:局部变量,对象的引用(创建对象时,等号左边的就是引用)
  5. 堆:对象的实例(创建对象时,等号右边的东西/new 出来的东西)
  • 局部变量:写在方法中的变量
  • 全局变量:写在方法外,类中的变量

练习

  1. 创建一个int类型的一维数组,将里面的每一个元素 复制 给另一个数组,并且遍历出来。
package test;
public class Home1 {
	public static void main(String[] args) {
		//定义一个数组     静态  动态 
		int[] arr = {11,22,33,44,321,32,76,9879};
		//定义另外一个数组  长度设置成 和 第一个数组一样  数组.length
		int[] arr1 = new int[arr.length];
		//在遍历 数组的 同时 , 将里面的元素一个一个的赋值
		for (int i = 0; i < arr.length; i++) {
			
			//把 arr对应 角标位置上的元素  赋值 给 arr1 的对应位置		
			arr1[i] = arr[i];
			System.out.println(arr1[i]);
		}
	}
}
  1. 创建一个int类型的一维数组,根据键盘输入一个数,将这个数加到这个数组的末尾,并遍历出这个新的数组。
package test;
import java.util.Scanner;
public class Home2 {
	public static void main(String[] args) {
		//第一个数组
		int[] arr = {1,2,3};
		Scanner s = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		int num = s.nextInt();
		//创建第二个数组     动态     长度 比 第一个数组 多  1
		int[] arr1 = new int[arr.length+1];
		//在遍历第一个数组的同时 将每个元素 赋值给 第二个数组的对应的位置     ,
		for (int i = 0; i < arr.length; i++) { //如果遍历第二个数组 ,越界
			arr1[i] = arr[i];
		}
		//第二数组还剩最后一个位置 赋值成  num
		arr1[arr1.length-1] = num ;
		System.out.println("新数组:");
		for (int i = 0; i < arr1.length; i++) {
			System.out.println(arr1[i]);
		}
	}
}
  1. 将星期一到星期日放进数组中,根据键盘输入一个数字,来对应打印星期数。
package test;
import java.util.Scanner;
public class Array_3 {
	public static void main(String[] args) {
		String[] date = new String[]{"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
		Scanner s = new Scanner(System.in);
		System.out.println("请输入1-7之间的数字");
		int write = s.nextInt();
		String res = date[write-1];
		System.out.println("您输入的是:"+res);
	}
}
  1. 随机10个(1-100之间)的整数,放进数组中,将角标为奇数的元素的值翻倍,然后遍历出来
package test;
import java.util.Random;
public class Home3 {
	public static void main(String[] args) {
		
		Random r = new Random();
		
		//创建数组   动态
		int[] arr = new int[10];
		//在遍历的同时  随机数字
		System.out.println("刚生成的数组:");
		for (int i = 0; i < arr.length; i++) {
			
			int num = r.nextInt(100)+1;
			
			arr[i] = num;
			System.out.print(arr[i]+" ");
		}	
		System.out.println();
		System.out.println("----------------------");
		
		System.out.println("改变后的数组:");
		for (int i = 0; i < arr.length; i++) {
			
			if(i%2==1){
				arr[i] = arr[i] * 2;
			}
			System.out.print(arr[i]+" ");
		}	
	}
}

  1. 一维打地鼠
    1. 初始化char类型的一维数组 O O O O O 五个洞
    2. 游戏循环10次
    3. 随机角标地鼠随机出现 O O O X O
    4. 提示玩家击打
    5. 判断是否打中
    6. 击中得2分,未击中扣1分(乱输入也视为没打中)
    7. 游戏结束,统计击中次数,未击中次数 和最后的得分
package test;
import java.util.Random;
import java.util.Scanner;
public class Home4 {
	public static void main(String[] args) {	
		//定义 变量       ctrl + shift + o  快捷导包
		Scanner s = new Scanner(System.in);
		Random r = new Random();
		//洞穴的数组  静态  动态
		char[] arr = new char[5];// 
		//游戏次数
		int count = 0;
		//击中 未击中
		int hit = 0;
		int miss = 0;
		//得分
		int score = 0;
		System.out.println("欢迎来到打地鼠游戏");
		System.out.println("洞穴初始化中。。。");
		for (int i = 0; i < arr.length; i++) {
			arr[i] = 'O'; 
			System.out.print(arr[i]+" ");
		}
		System.out.println();
		System.out.println("--------------------------");
		
		//游戏  循环
		while(count<10){
			count++;
			System.out.println("第"+count+"次,游戏:");
			//地鼠随机出现   随机角标  
			int index = r.nextInt(arr.length);// 0 - arr.length-1
			//将随机出来的角标 所对应的元素改成  X
			arr[index] = 'X';
			
			System.out.println("请注意,地鼠出现了!!!!");
			System.out.println("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
			for (int i = 0; i < arr.length; i++) {
				System.out.print(arr[i]+" ");
			}
			System.out.println();
			System.out.println("--------");
			System.out.println("请击打:");
			int player = s.nextInt()-1;  // 1 2 3 4 5
			
			//判断
			if(index == player){
				System.out.println("恭喜你打中了!");
				hit++;
				score+=2;
				
			}else{
				System.out.println("很遗憾,没打中。。。");
				miss++;
				score--;		
			}	
			//还原洞穴  O
			arr[index] = 'O';
			//显示当前得分
			System.out.println("当前得分:"+ score);
		}
		//最终统计
		System.out.println("------------------");
		System.out.println("game over");
		System.out.println("击中:"+ hit);
		System.out.println("未击中:"+miss);
		System.out.println("最终得分:"+score);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42829628/article/details/83926600