第二章 基本语法(2.6数组)
目录
1 数组的基本定义
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.3 表明默认值为
- int 0;
- float double 0.0;
- char 空格;
- boolean false;
- string null;(引用数据类型如数组,默认值都为null)
2.4 基本代码说明
(1)创建基本数据类型数组
(2)创建元素为引用类型(对象)的数组
3 一维数组的内存结构
3.1 一维数组内存基本结构
3.2 内存的使用方式
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 基本代码格式
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 多维数组的内存结构
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 数组异常问题