数组
一维数组
1.什么是数组?
数组是一个特殊的“变量”,存储相同类型的一组数据。
比如声明一个一个变量就是在内存空间划出一块适合的空间,声明一个数组就是在内存空间划出一串连续的空间。
变量是在内存中临时存储的运行数据
为了能够更复杂的存储数据,我们需要学习数组
数组和变量在内存中存储的对比效果图:
数组和变量一样,由四种要素组成
数组的基本要素:
1.标识符
和变量名命名规范一致
2.数组元素
数组中存储的一个个变量.
3.数组下标(索引)数组长度:从0开始(对数组元素进行编号,从0开始,数组中的每个元素都可同过下标来访问)
4.元素类型
数值类型:byte short int long float double
非数值类型:char boolean String
数组的定义
1.声明数组
告诉计算机数据类型
2.分配空间
告诉计算机分配几个连续的空间,指定空间长度后不可变
a = new int[5];
scores = new int[30];
avgAge = new int[6];
name = new String[30];
int[] xXX = new int[2];
xXX = new int[3];//这个中括号内的长度不是改变长度,而是引用数组内的长度地址 是新的空间
声明数组并分配空间。
3.赋值(向中括号内存放数据)
注意:
数组定义好后,即使不赋值也是由默认值的,类型不同默认值不同。
数组赋值方式
方法1:边声明边赋值
int[] scores = {89,79,76};
int[] scores = new int []{89,79,76};
不能将这种方法拆分为两条
int[] arr;
arr = {1,2,3,4}; X
从键盘录入信息并赋值
遍历的含义及使用方式
遍历:将某个内容的所有值元素一个一个全部取出来的过程。
遍历方式1:将循环变量i作为数组的下标值,可以通过此值来获取对应的元素。
// 声明一个int数组并赋值
int[] scores = {10,20,30,40,50};
// 增强for循环
// for(数组类型 变量名 : 要遍历的数组名)
for(int score : scores){
// score 就是遍历出来的每一个元素
System.out.println(score);
}
遍历方式2:增强for循环(forreach)将数组中的每一个元素值都存储到临时变量中用来使用
for(数组元素类型 数组元素名:要遍历的数组名)
// 数组元素名
}
for(double score :scores){
score
}
Arrays数组工具类
java.util 包提供的工具类,Arrays类提供操作数组的方法,如:排序、查询。
冒泡排序
冒泡排序算法的运作如下:(降序)
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应
该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
口诀:外层循环n-1
内层循环n - 1 - i
二维数组
二维数组的含义
二维数组本质上是以数组作为数组元素的数组,即”数组的数组“,类型说明符 数组名[常量表达式] [常量表达式]。
二维数组的使用
public class shuZu{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
// 定义一个二维数组 用来存储3个班的学生成绩 每个班有5名学生
int[][] scores = new int[3][5];
// 动态给二维数组赋值
for(int i = 0;i < scores.length;i ++){
System.out.println("第"+(i + 1)+"个班");
for(int j = 0;j < scores[i].length;j ++){
System.out.println("请输入"+(j+1)+"个学生成绩");
int score = input.nextInt();// 成绩
score[i][j] = score;// 存储成绩
}
}
// 使用for循环遍历二维数组
for(int i = 0;i < scores.length;i ++){
int sum = 0;// 用来每个班总成绩
for(int j = 0;j < scores[i].length;j ++){
sum += scores[i][j];
}
System.out.println((i+1)+"班的总成绩为"+sum);
}
}
}