Java学习第四天:数组

一维数组的说明

public class arraytest {
	public static void main(String[] arg){
		//1、一维数组的声明和初始化
		//1.1、静态初始化:数组的初始化和数组元素的赋值操作同时进行
		int[] ids;
		ids = new int []{1001,1002,1003,1004};
		//1.2、动态初始化
		String[] names = new String[5];
		
		
		//2、如何调用数组中指定位置的元素
		names[0] = "王明";
		names[1] = "小明";
		names[2] = "大明";
		names[3] = "唐三";
		names[4] = "小舞";
		
		
		//3、如何获取数组的长度:length
		System.out.println(names.length);
		System.out.println(ids.length);
		
		//4、如何遍历数组
		for(int i = 0; i< names.length ; i++){
			System.out.println(names[i]);
		}
		
		//5、数组元素默认初始化值
		
		//double \ short \ int \ byte \ long \ float 都是0
		int[] int1 = new int[3];
		for(int i = 0 ; i < int1.length ; i++){
			System.out.println(int1[i]);
		}
		
		//String 是 null 
		String[] str = new String[3];
		for(int i = 0 ; i < str.length ; i++){
			System.out.println(str[i]);
		}
		
		//char 是 ASCII是 0 或者说是"/u000"
		char[] ch = new char[3];
		for(int i = 0 ; i < ch.length ; i++){
			System.out.println(ch[i]);
		}
		
		//boolean初始化是 false
		boolean[] bo = new boolean[3];
		System.out.println(bo[0]);
		
	}
}

一维数组内存解析

内存的简化结构

在这里插入图片描述
在这里插入图片描述

一维数组练习

package com.atguigu.exer1;

import java.util.Scanner;

/*
 * 2. 从键盘读入学生成绩,找出最高分,并输出学生成绩等级。
		成绩>=最高分-10    等级为’A’   
		成绩>=最高分-20    等级为’B’
		成绩>=最高分-30    等级为’C’   
		其余                               等级为’D’
		
		提示:先读入学生人数,根据人数创建int数组,存放学生成绩。

 * 
 */
public class exer1 {
	public static void main(String[] arg){
		String[] names = new String[]{"小明","大明","唐三","小舞","荣荣"};
		int[] scores = new int[5];
		Scanner scan = new Scanner(System.in);
		for(int i = 0 ; i < scores.length ; i++){
			System.out.print("请输入" + names[i] + "的成绩" + ":");
			scores[i] = scan.nextInt();
			System.out.println();
		}

		//找出最高分
		
		int max = scores[0] ;
		for(int i = 1 ; i < scores.length ; i++ ){
			if(scores[i] > max){
				max = scores[i];
			}
		}
		
		//判定等级
		
		for(int i = 0 ; i < names.length ; i++){
			if(scores[i] >= max - 10)
				System.out.println(names[i] + "的等级为:A");
			else if(scores[i] >= max - 20)
				System.out.println(names[i] + "的等级为:B");
			else if(scores[i] >= max - 30)
				System.out.println(names[i] + "的等级为:C");
			else
				System.out.println(names[i] + "的等级为:D");
			
		}
	}
}




在这里插入图片描述

二维数组的使用

package com.atguigu.array;

public class arraytest2 {
	public static void main(String[] args) {
		//1	、 二维数组的初始化和声明
		int[] arr4[] = new int[][]{{1,2,3},{4,5,13,2,32,42,1},{7,8,9}};
		String[][] arr1 = new String[3][2];
		String[][] arr2 = new String[3][];
		
		//2、调用制定位置的值
		System.out.println(arr4[0][1]);
			//重新分配
		//arr4[1] = new int[3];
		System.out.println(arr4[1][0]);
		
		//3、获取长度
		System.out.println(arr4.length);
		System.out.println(arr4[1].length );
		
		//4、遍历
		for(int i =0 ; i < arr4.length ; i++){
			for(int j = 0 ; j < arr4[i].length ; j++){
				System.out.print(arr4[i][j] + "   ");
			}
			System.out.println();
		}
		
		
		//5、元素的初始化
		int[][] arr5 = new int[3][2];
		String[][] arr6 = new String[3][4];
		boolean[][] arr7 = new boolean[4][2];
		System.out.println(arr5);//[[I@15db9742
		//外层元素
		System.out.println(arr5[0]);//[I@6d06d69c
		System.out.println(arr6[0]);
		System.out.println(arr7[0]);
		//内层元素
		System.out.println(arr5[0][0]);
		System.out.println(arr6[0][0]);
		System.out.println(arr7[0][0]);
		
		
	}
}

内存解析

在这里插入图片描述

Arrays工具类的使用

package com.aguigu.array;

import java.util.Arrays;

//arrays工具类的使用
public class array1 {
	public static void main(String[] args) {
		int[] arr1 = new int[]{1,2,3,4};
		int[] arr2 = new int[]{2,4,1,3};
		
		// 1.boolean equals(int[] a,int[] b):判断两个数组是否相等。
		boolean flag = Arrays.equals(arr1, arr2);
		System.out.println(flag);
		// 2.String toString(int[] a):输出数组信息。
		System.out.println(Arrays.toString(arr1));

		// 3.void fill(int[] a,int val):将指定值填充到数组之中。
		Arrays.fill(arr1, 3);
		System.out.println(Arrays.toString(arr1));

		// 4.void sort(int[] a):对数组进行排序。
		Arrays.sort(arr2);
		System.out.println(Arrays.toString(arr2));
		// 5.int binarySearch(int[] a,int key)
		int num = Arrays.binarySearch(arr2, 3);
		System.out.println(num);

	}
}

数组异常

package com.aguigu.array;
/*
 * 数组中的常见异常:
 * 1. 数组角标越界的异常:ArrayIndexOutOfBoundsExcetion
 * 
 * 2. 空指针异常:NullPointerException
 * 
 */
public class ArrayExceptionTest {
	public static void main(String[] args) {
		
		//1. 数组角标越界的异常:ArrayIndexOutOfBoundsExcetion
		int[] arr = new int[]{1,2,3,4,5};
		
//		for(int i = 0;i <= arr.length;i++){
//			System.out.println(arr[i]);
//		}
		
//		System.out.println(arr[-2]);
		
//		System.out.println("hello");
		
		//2.2. 空指针异常:NullPointerException
		//情况一:
//		int[] arr1 = new int[]{1,2,3};
//		arr1 = null;
//		System.out.println(arr1[0]);
		
		//情况二:
//		int[][] arr2 = new int[4][];
//		System.out.println(arr2[0][0]);
		
		//情况三:
		String[] arr3 = new String[]{"AA","BB","CC"};
		arr3[0] = null;
		System.out.println(arr3[0].toString());
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值