第二章 基本语法(2.6数组)

目录

1 数组的基本定义

2 基本数据类型+引用数据类型(类,接口、数组)代码演示:

2.1 基础代码

2.2 运行结果 

2.3 表明默认值为

2.4 基本代码说明

3 一维数组的内存结构

3.1 一维数组内存基本结构

3.2  内存的使用方式

3.3 练习

4 多维数组

4.1 基本代码格式

4.2 多维数组的内存结构

4.3基本代码



                                                                                                                                                                                                   

1 数组的基本定义

第二章 基本语法(2.6数组)

第二章 基本语法(2.6数组)

第二章 基本语法(2.6数组)

2 基本数据类型+引用数据类型(类,接口、数组)代码演示:

2.1 基础代码

public class TestArry {
    public static void main(String[] args){
        int [] scores = new int[4];
        scores[0] = 89;
        //scores[1] = 89;
        //scores[2] = 89;
        scores[3] = 90;
        for (int i = 0;i<scores.length;i++){
            System.out.println(scores[i]);

        }

        //对于float double:
        float[] f = new float[3];
        f[0] = 1.2f;
        for (int i = 0;i<f.length;i++)
            System.out.println(f[i]);

        //char:
        char[] c = new char[4];
        c[0] = 'j';
        for (int i = 0;i<c.length;i++){
            System.out.println(c[i]);
        }

        //对于boolean:
        boolean [] b = new boolean[4];
        for (int i = 0;i<b.length;i++){
            System.out.println(b[i]);
        }

        //对于引用数据类型,默认初始数据类型为null。以string为例

        String[] s = new String[4];
        s[0] = "jj";
        for (int i = 0;i<s.length;i++){
            System.out.println(s[i]);
        }

        Person[] pers = new Person[];
        for (int i = 0;i<pers.length;i++){
            System.out.println(pers[i]);
        }



    }

    class Person{ }
    
}

2.2 运行结果 

第二章 基本语法(2.6数组)

2.3 表明默认值为

  • int  0;
  • float double 0.0;
  • char   空格;
  • boolean  false;
  • string null;(引用数据类型如数组,默认值都为null)

2.4 基本代码说明

(1)创建基本数据类型数组

第二章 基本语法(2.6数组)

第二章 基本语法(2.6数组)

(2)创建元素为引用类型(对象)的数组

第二章 基本语法(2.6数组)

第二章 基本语法(2.6数组)

3 一维数组的内存结构

3.1 一维数组内存基本结构

第二章 基本语法(2.6数组)

3.2  内存的使用方式

第二章 基本语法(2.6数组)

3.3 练习

(1)学习从主函数遍历外面建立的数组Primitive

package com.atgui.exer;

public class TestPritimive {
	public static void main(String[] args){
		//创建Primitive的对象d
		Primitive d = new Primitive();
		//遍历d的数组元素
		for(int i =0;i<d.t.length;i++){
			System.out.println(d.t[i]);
		}
		//给d的数组元素重新赋值
		d.t[0] = true;
		d.t[1] = true;
		d.t[2] = true;
		for(int i = 0;i<d.t.length;i++){
			System.out.println(d.t[i]);
		}
	}
	
}

class Primitive{
	boolean[] t = new boolean[3];
	
}
  •  感悟:存在于外面的这个类Primitive与Scanner这样的包类似,通过new进行建立与调用;.一般表示功能调用or继      承!创建对象一般而言就是创建一个变量名,可以调用这个类或者接口的功能(核心就是面向对象编程)。
  • 包名:多单词组成时所有字母都小写:xxxyyyzzz
    类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
    变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
    常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

(2)读入学生成绩,赋值给数组,打印出最高分并评级

package com.atgui.exer;
/*
 * 从键盘读入学生成绩,找出最高分,并输出学生成绩等级
 */
import java.util.Scanner;
public class TestStudentScore {
	public static void main(String[] args){
		//1.创建Scanner的对象,从键盘获取学生成绩
		Scanner s = new Scanner(System.in);
		System.out.println("请输入学生个数:");
		int count = s.nextInt();
		//2.根据学生个数n,创建一个长度为n的int型的数组
		int[] scores = new int[count];
		int maxScore = 0;
		//3.依次从键盘获取n个学生的成绩,并赋给相应的数组元素,并获取最高分
		for (int i = 0;i<scores.length;i++){
			int score = s.nextInt();
			scores[i] = score;
			if(scores[i]>maxScore){
				maxScore = scores[i];
			}
		}
		
		//4.遍历学生成绩的数组,并根据成绩与最高分的差值,赋予评级并输出
		System.out.println("最高分为:"+maxScore);
		for(int i =0;i<scores.length;i++){
			char level;
			if(scores[i]>=maxScore-10){
				level = 'A';
			}else if(scores[i]>=maxScore-20){
				level = 'B';
				
			}else if(scores[i]>=maxScore-30){
				level = 'C';
				
			}else
				level = 'D';
			
			System.out.println("student"+i+"score"+scores[i]+"grade is"+level);
			
		}
	}

}
  •  感悟:Scanner与数组赋值配套使用!

4 多维数组

4.1 基本代码格式

第二章 基本语法(2.6数组)

第二章 基本语法(2.6数组)

4.1.1练习(上述题目)

public class TestArry3 {
    public static void main(String[] args){

        int [][] arr = new int[3][];
        arr[0] = new int[3];
        arr[1] = new int[2];
        arr[2] = new int[4];
        arr[0][0] = 3;
        arr[0][1] = 8;
        arr[0][2] = 2;
        arr[1][0] = 2;
        arr[1][1] = 7;
        arr[2][0] = 9;
        arr[2][1] = 0;
        arr[2][2] = 1;
        arr[2][3] = 6;

        int sum=0;
        for (int m = 0;m<arr.length;m++){
            for (int n = 0;n<arr[m].length;n++){
                sum +=arr[m][n];
            }

        }
        System.out.println("所有元素和为:"+sum);
    }
}

4.2 多维数组的内存结构

第二章 基本语法(2.6数组)

 

4.3基本代码

public class TestArry2 {
    public static void main(String[] args){
        int [] score = new int[10];
        int [] [] score1;
        String[][] names;
        //1.二维数组的初始化
        score1 = new int[][]{{1,2,3},{2,3,4},{5,4,6}};//静态初始化!

        //names = new String[6][5];//动态初始化!
        names = new String[6][];//动态初始化!在不明白每个小组多少人的情况下
        names[0] = new String[5];
        names[1] = new String[4];
        names[2] = new String[7];
        names[3] = new String[5];
        names[4] = new String[8];
        names[5] = new String[5];
        //2.如何来引用具体的某一个元素
        int[][] i = new int[3][2];// 同:int[] i[] = new int[3][2];
        i[1][0] = 90;
        i[2][0] = 89;
        //3.数组的长度,length调用
        System.out.println(i.length);//3
        System.out.println(i[0].length);//2
        System.out.println(names[4].length);//8
        //4.如何遍历二维数组(嵌套for循环!)
        for (int m=0;m<score1.length;m++){
            for (int n = 0;n<score1[m].length;n++){
                System.out.print(score1[m][n]+" ");
            }
            System.out.println(" ");

        }
    }
}

4.4 数组异常问题