Java 数组基础知识

在这里插入图片描述

数组是有序排列的,数组的长度就是元素的个数。
在这里插入图片描述

一维数组

/*一维数组的使用:
 * ①一维数组的声明和初始化
 * ②如何调用数组的指定位置的元素
 * ③如何获取数组的长度
 * ④如何遍历数组
 * ⑤数组元素的默认初始化值  见ArrayTest1.java
 */
package com.atguigu.java;
public class ArrayTest {
	public static void main(String[] args) {
//①一维数组的声明和初始化
		int[] ids;  //声明
		//静态初始化:数组的初始化和数组元素的赋值操作同时进行
		ids=new int[]{ 1001,1002,1003,1004};  
		//动态初始化:数组的初始化和数组元素的赋值操作分开进行
		String[] names=new String[5];
		
		//数组一旦初始化完成,其长度就确定了
//②如何调用数组的指定位置的元素:通过角标
		//数组的角标从0开始到数组长度-1结束
		names[0]="哈哈哈";
		names[1]="黑呵呵";
		names[2]="嘿嘿和";
		names[3]="科科达";
		names[4]="顶顶顶"; 
//③如何获取数组的长度:length属性
		System.out.println(names.length);  //5
		System.out.println(ids.length); //4
//④如何遍历数组
		for(int i=0;i<names.length;i++){
			System.out.println(names[i]);
			}
	}

}

package com.atguigu.java;
/* 
 * ⑤数组元素的默认初始化值 
 * 		数组元素是整型:0 (默认初始化值 )
 * 		数组元素是浮点型:0.0
 * 		数组元素是char型,默认为0(不是'0',而是说某一个字符映射为0)eg: 'a' 映射为97
 * 		数组元素为Boolean型:默认为false
 * 		数组元素为引用数据类型(此处以String为例)时,默认为: null
 * */
public class ArrayTest1 {
	public static void main(String[] args) {
		int[] arr=new int[4];
		for(int i=0;i<arr.length;i++){
		//没有赋值,输出试试
		System.out.println(arr[i]);
		}
		System.out.println("************");
		float[] arr2=new float[5];
		for(int i=0;i<arr2.length;i++)
		System.out.println(arr2[i]);
		System.out.println("************");
		char[] arr3=new char[5];
		for(int i=0;i<arr3.length;i++)
		System.out.println("---"+arr3[i]+"----");  //此处输出类似空格的效果,但不是空格,空格的ascll码不是从0
		System.out.println("************");
		boolean[] arr4=new boolean[5];
		for(int i=0;i<arr4.length;i++)
		System.out.println(arr4[i]);
		System.out.println("************");
		String[] arr5=new String[5];
		for(int i=0;i<arr5.length;i++)
		System.out.println(arr5[i]);
		
	}

}

趣味练习:
在这里插入图片描述

package com.atguigu.exer;

public class ArrayDemo {
		public static void main(String[] args) {
		int[] arr = new int[]{8,2,1,0,3};
		int[] index = new int[]{2,0,3,2,4,0,1,3,2,3,3};
		String tel = "";
		for(int i = 0;i < index.length;i++){
		tel += arr[index[i]];
		}
		  System.out.println("联系方式:" + tel);   //18013820100
		}
		}

}

在这里插入图片描述

练习:
在这里插入图片描述

package com.atguigu.exer;
import java.util.Scanner;
public class ArrayDemo1 {
	public static void main(String[] args) {
	//1,使用Scanner读取学生个数
	Scanner scanner=new Scanner(System.in);
    System.out.println("请输入学生人数:");
    int number=scanner.nextInt();
	//2,创建数组,存储学生成绩,动态初始化
    int[] scores=new int[number];
	//3,给数组中元素赋值
    System.out.println("请输入"+number+"位同学成绩:");
    for(int i=0;i<scores.length;i++){
    	scores[i]=scanner.nextInt();
    }
	//4,获取数组元素中元素的最大值:最高分
    int maxScore=0;
    for(int i=0;i<scores.length;i++){
    	if(maxScore<scores[i]){
    		maxScore=scores[i];
    	}
    }
	//5,根据每个学生成绩与最高分的差值,得到每个学生分数等级,并输出等级和成绩
    char level;
    for(int i=0;i<scores.length;i++){
    	if(maxScore-scores[i]<=10){
    		level='A';
    	}else if(maxScore-scores[i]<=20){
        	level='B';
        }else if(maxScore-scores[i]<=30){
            level='C';
        }else{
            level='D';
    	}
    	System.out.println("student "+i+" SCORE is "+scores[i]+","+ "grade is"+level);
     }
    }
}
	

在这里插入图片描述

多维数组

1,二维数组的使用

在这里插入图片描述

/*⑤二维数组元素的默认初始化值
 * 规定:
 * 二维数组分为外层数组的元素和内层数组的元素
 * int[][] arr=new int[4][3];
 * 外层元素:arr[0],arr[1]等
 * 内层元素:arr[0][0],arr[1][2]等
 * 
 *对于初始化方式一如( int[][] arr=new int[4][3];):
 *             外层元素初始化值为:地址值
 *             内层元素初始化值为:与一维数组初始化情况相同
 *针对初始化方式二如(double[][] arr3=new double[4][];):
 *			   外层元素初始化值为:null
 *             内层元素初始化值为:会报错,不能调用
 * */
package com.atguigu.java;

public class ArrayTest3 {
	public static void main(String[] args) {
		 int[][] arr=new int[4][3];
		 System.out.println(arr[0]);  //输出一个地址值:[I@15db9742
		 System.out.println(arr[0][0]);//0
		 System.out.println("*************");
		 float[][] arr1=new float[4][3];
		 System.out.println(arr1[0]);  //输出一个地址值:[F@6d06d69c
		 System.out.println(arr1[0][0]);//0.0
		 System.out.println("*************");
		 String[][] arr2=new String[4][3];
		 System.out.println(arr2[0]);  //输出一个地址值:[Ljava.lang.String;@7852e922
		 System.out.println(arr2[0][0]);//null
		 System.out.println("*************");
		 
		 //推理
		 double[][] arr3=new double[4][];
		 System.out.println(arr3[1]);  //null,一维数组元素仍为数组,而数组属于引用数据类型未赋值,默认为null
		 System.out.println(arr3[1][0]);//报错,空指针异常
		 System.out.println("*************");
		 
		 
	}
	

}

二维数组的内存解析:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

过期动态

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

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

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

打赏作者

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

抵扣说明:

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

余额充值