尚硅谷java学习笔记第五天(数组上)

2021/10/15 20:15:01

本文主要是介绍尚硅谷java学习笔记第五天(数组上),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

复习

/*
1000以内的完数
*/

public class Test {
	public static void main(String[] args) {
		
		
		for(int i = 1;i <= 1000;i++){//遍历1000以内的数
			
            int sum = 0;//初始化1000以内每个数的因数的和
			
            for(int j = 1;j < i;j++){//遍历1000以内每个数的因数
				
				if(i % j == 0){					
					sum += j;		//1000以内每个数的因数累加				
				}
				
			}
			if(sum == i){
				System.out.println(i);//如果每个数的因数的和等于其数本身就输出
				
			}						
		}		
	}
}

五:数组

数组概述:

数组(Array),是多个相同类型数据一定顺序排列 的集合,并使用一个名字命名,并通过编号的方式 对这些数据进行统一管理。

数组的常见概念

数组名

下标(或索引)

元素

数组的长度

一维数组

/*
 *一.数组概述:
 *1.数组(Array),是多个相同类型数据按一定顺序排列 的集合,并使用一个名字命名,并通过编号的方式 对这些数据进行统一管理。 
 * 
 *2数组的相关概念
 *
 *>数组名
 *>元素
 *>角标,下标,索引
 *>数组的长度:元素的个数
 *
 *3.数组的特点
 *1)数组是有序排列的
 *2)数组本身属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
 *3)创建数组对象会在内存中开辟一整块连续的空间
 *4)数组的长度一旦确定,就不能修改
 *
 *4.数组的分类:
 *按照维数:一维数组,二维数组
 *按照数组元素的类型,基本数据类型的数组,引用数据类型元素的数组(对象数组)
 *
 *5.一维数组的使用
 *	①一维数组的声明和初始化
 *	②如何调用数组的指定位置的元素
 *	③如何获取数组的长度
 *	④如何遍历数组
 *	⑤数组元素的默认初始化值
 *	⑥数组的内存解析
 *
 */

public class ArrayTest {
	
	public static void main(String[] args) {
		
		//①一维数组的声明和初始化
		
		int num;//声明
		num = 10;//初始化
		int id = 1001;//声明加初始化
		
		int[] ids;//声明
		//静态初始化:数组的初始化和数组元素的赋值操作同时进行
		ids = new int[]{1001,1002,1003,1004};
		
		//动态初始化:数组的初始化和数组元素的赋值操作分开进行
		String[] names = new String[5];
        
        //也是正确的写法
        int[] arr = {1,2,3,4,5}; //类型推断
		
		//总结,数组一旦初始化完成,其长度就确定了
		
		//②如何调用数组的指定位置的元素
		//数组的角标(或索引)从0开始的,到数组的长度-1结束。
		names[0] ="王明";
		names[1] ="王和";
		names[2] ="张学良";
		names[3] ="孙巨龙";
		names[4] ="王宏志";//"王"charAt(0)
		
		//③如何获取数组的长度
		//属性:length
		System.out.println(names.length);//5
		System.out.println(ids.length);//4
		
		//④如何遍历数组
		/*System.out.println(names[0]);
		System.out.println(names[1]);
		System.out.println(names[2]);
		System.out.println(names[3]);
		System.out.println(names[4]);*/
		
		for(int i = 0;i < names.length;i++){
			
			System.out.println(names[i]);
			
		}
		
		//⑤数组元素的默认初始化值
		//	基本数据类型
		//	整型: 0
		//	浮点型:0.0
		//	char:'0' 对应 Ascii码的值
		//	boolean类型:false
		System.out.println("*******整型*******");
		int[] arr = new int[4];
		for(int i = 0;i < arr.length;i++){
			
			System.out.println(arr[i]);
			
		}
		
		System.out.println("******整型********");
		short[] arr1 = new short[4];
		for(int i = 0;i < arr1.length;i++){
			
			System.out.println(arr1[i]);
			
		}
		System.out.println("*******浮点型*******");
		float[] arr2 = new float[4];
		for(int i = 0;i < arr2.length;i++){
			
			System.out.println(arr2[i]);
			
		}
		System.out.println("******char********");
		char[] arr3 = new char[4];
		for(int i = 0;i < arr3.length;i++){
			
			System.out.println(arr3[i]);
			
		}
		if(arr3[0] == 0){
			System.out.println("你好");
		}
		System.out.println("*****boolean******");
		
		boolean[] arr4 = new boolean[5];
		
		System.out.println(arr4[0]);
		
		//⑤数组元素的默认初始化值
		//	引用数据类型:null
        System.out.println("*****引用数据类型******");
		
        String[] arr5 = new String[5];
		
		System.out.println(arr5[0]);
		
		if(arr5[0] == null){
			System.out.println("你好");
		}		
		}
}

数组的内存解析

简单的内存解析
在这里插入图片描述

在这里插入图片描述

/*
 *练习1
 *升景坊单间短期出租4个月,550元/月(水电煤公摊,网费35元/月),空调、卫生间、厨房齐全。
 *屋内均是IT行业人士,喜欢安静。所以要求来租者最好是同行或者刚毕业的年轻人,爱干净、安静。
 */

public class ArrayTest {

	public static void main(String[] args) {
								 //0 1 2 3 4				
			 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]];//18013820100
			 }
			 System.out.println("联系方式:" + tel);
	 }
}
/*
练习2
从键盘读入学生成绩,找出最高分,并输出学生成绩等级。
成绩>=最高分-10 等级为’A’ 
成绩>=最高分-20 等级为’B’
成绩>=最高分-30 等级为’C’ 
其余 等级为’D’
提示:先读入学生人数,根据人数创建int数组,存放学生成绩。
 */
import java.util.Scanner;
public class ArrayTest {

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

多维数组的使用

Java 语言里提供了支持多维数组的语法。

如果说可以把一维数组当成几何中的线性图形, 那么二维数组就相当于是一个表格,像右图Excel 中的表格一样。

对于二维数组的理解,我们可以看成是一维数组 array1又作为另一个一维数组array2的元素而存 在。其实,从数组底层的运行机制来看,其实没有多维数组。

/*
 * 二维数组的使用
 * 
 * 1,理解
 * 对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。
 * 其实,从数组底层的运行机制来看,其实没有多维数组。
 * 
 * 2.二维数组的使用
 *	①二维数组的声明和初始化
 *	②如何调用数组的指定位置的元素
 *	③如何获取数组的长度
 *	④如何遍历数组
 *	⑤二数组元素的默认初始化值
 *	⑥数组的内存解析
 * 
 * 规定:二维数组分为外层数组的元素,内层数组的元素
 * 		int[][] arr = new int [4][3];
 * 		外层元素;arr[0],arr[1]等;
 * 		内层元素;arr[0][0],arr[1][2]等
 * 针对与初始化方式一:比如,int[][] arr = new int[4][3];
 * 		外层元素的初始化值为:地址值
 * 		内层元素的初始化值为;与一维数组初始化情况相同
 * 针对与初始化方式一:比如,int[][] arr = new int[4][];
 * 		外层元素的初始化值为:null
 * 		内层元素的初始化值为;不能调用,否则报错* 		
 * 
 */

public class ArrayTest {

	public static void main(String[] args) {
		
		//1.二维数组的声明和初始化
		int[] arr = new int[]{1,2,3};//一维数组
		//静态初始化
		int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
		//动态初始化1
		String[][] arr2 = new String[3][2];
		//动态初始化2
		String[][] arr3 = new String[3][0];
		
		 //也是正确的写法
		int arr4[][] = new int[][]{{1,2,3},{4,5},{6,7,8}};
		int[] arr5[] = new int[][]{{1,2,3},{4,5},{6,7,8}};
		
		//2.如何调用数组的指定位置的元素
		System.out.println(arr1[0][1]);//2
		System.out.println(arr2[1][1]);//null
		
		arr3[1] = new String[4];
		System.out.println(arr3[1][0]);
		
		//3.获取数组的长度
		System.out.println(arr5.length);//3
		System.out.println(arr5[0].length);//3
		System.out.println(arr5[1].length);//2
		
		//4.如何遍历数组
		for(int i = 0; i < arr5.length;i++){
			
			for(int j = 0; j < arr5[i].length;j++){
				System.out.print(arr5[i][j] + " ");
			}
			System.out.println();
		}
        //5,二数组元素的默认初始化值
       
        int[][] arr = new int [4][3];
		System.out.println(arr[0]);//[I@15db9742 地址值
		System.out.println(arr[0][0]);//0
        System.out.println(arr);//[[I@15db9742
        //外层:地址值 内层:与一维数组初始化情况相同
        
        
        
        
        //6,数组的内存解析
        
    }
}

二维数组的内存解析

在这里插入图片描述



这篇关于尚硅谷java学习笔记第五天(数组上)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程