数组
一、一维数组
1. 数组
数组是具有相同数据类型且按照一定次序排列的一组变量的集合体。即一个变量名表示一批数据。
Java为数组在内存中分配一段连续的空间,这段空间中存储数据的个数是固定的。
-
数组元素
构成一个数组的每一个数据称为数组元素。 -
数组下标
下标是数组元素在数组中的位置。从0开始,也叫数组索引。 -
数组大小
数组中元素的个数叫做数组的大小,也叫做数组的长度。
2. 数组使用步骤
-
定义数组
格式:数据类型 数组名[];
或数据类型[] 数组名;
int scores[];
int[] scores;
定义数组的本质是向 JVM 申请内存,JVM 将内存划分为几个区域,其中包含了堆和栈,不同的区域储存不同类别的数据,JVM 将数组的名称存储在栈中,栈是一种先进后出的数据结构,因此数组名在栈底。
- 为数组元素分配内存
要让系统为数组元素分配存储空间,必须指出数组元素的个数,并通过
new
运算符为元素分配内存空间。
格式:数组名 = new 数组类型[数组长度];
scores = new int[5];
可以将定义数组和数组元素分配内存合并,例如:
int[] scores = new int[5];
分析:
- 程序运行到 main 方法,main 方法进栈;
- 声明数组,JVM 会在堆里分配内存;
- scores 其实指向的就是堆里面的内存地址;
- main 方法里面的代码执行完毕,main 方法出栈。
- 数组元素初始化
数组声明并为数组元素分配空间完成后,必须为数组元素初始化赋值,才能使用数组元素。如果没有为数组元素初始化,那么数组元素也是默认值,各种类型数组元素默认值如下表:
数组元素类型 | 默认初始值 |
---|---|
byte, short, int, long | 0 |
float, double | 0.0 |
chat | ‘\u0000’ (空字符) |
boolean | false |
引用数据类型 | null |
示例: 访问数组元素和赋值
import java.util.Arrays;
public class learn01 {
public static void main(String[] args) {
int[] score = new int[5];
for (int i = 0; i < score.length; i++) {
score[i] = i + 67;
}
for (int i = 0; i < score.length; i++) {
System.out.println("score[" + i + "] = " + score[i]);
}
System.out.println(Arrays.toString(score));
}
}
定义数组、为数组元素分配内存、数组元素初始化,这三步可以合并一起写
int[] scores = new int[]{12,56,34,78};
int[] scores = {12,56,34,78};
重要提示:
(1) Java将数据类型分为两大类,一类是基本数据类型,一类是引用数据类型。
(2) 它们的区别在于基本数据类型的变量中储存的是真实的数据值(如 scores[0],其真实数据 12);而引用数据类型的变量中储存的是内存地址编号(如上述例子中的组名 scores 就是引用数据类型,其值为内存地址编号)
- 使用数组
示例: 求平均值
public class learn03 {
public static void main(String[] args) {
int[] scores = new int[]{67,78,65,88,79};
int sum = 0;
for (int i = 0; i < scores.length; i++) {
sum += scores[i];
}
int avg = sum / scores.length;
System.out.println(avg);
}
}
- 使用增强 for 遍历数组元素
JDK1.5 及其之后的版本中提供了增强 for 循环语句,实现了 lterable 接口的类都可以使用 for 循环进行元素的迭代。文章来源:https://www.toymoban.com/news/detail-632417.html
public class learn03 {
public static void main(String[] args) {
int[] scores = {67,78,65,88,79};
int sum = 0;
for (int s :scores){
sum += s;
}
int avg = sum / scores.length;
System.out.println(avg);
}
}
-
数组排序
-
冒泡排序
:通过相邻元素的大小进行笔记,每一轮将一个最小或最大的数放到队列的最后面
-
示例: 从键盘输入5名学生的身高,使用冒泡排序,按照从高到低顺序输出每一位学生的身高文章来源地址https://www.toymoban.com/news/detail-632417.html
public class BubbleSorting {
public static void main(String[] args) {
int[] heights = {155, 165, 175, 170, 180};
// 冒泡排序
for (int i = 0; i < heights.length - 1; i++) {
for (int j = 0; j < heights.length - 1 -i; j++) {
if (heights[j] > heights[j + 1]){
int temp = heights[j];
heights[j] = heights[j + 1];
heights[j + 1] = temp;
}
}
}
for (int height: heights) {
System.out.println(height);
}
}
}
到了这里,关于Java基础(六)数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!