数组【难点-引用数据类型-<堆>】
学习路线----数据如何存储
-
变量
-
数组
-
类和对象
-
对象数组
-
集合 List Set Map…
-
IO流 文件操作
-
XML文件(解析比较麻烦)
-
数据库(Database)
- RDB:MySQL
- NoSQL:Redis
-
数据库的集群
-
数据库水平拆分、垂直拆分
-
HBase 大数据存储
变量的数据类型
基本数据类型:
引用数据类型:数组、类(String是类的一种)
1.理解数组的作用
发现的问题:变量在使用它只能使用基本数据类型,存储值只能存储简单的数据/单一的数据。如果想同时存储更多的数据,它无法实现,同样关于变量的操作比计较简单,我们需要寻找一种能够同时存储更多数据的,并且操作更加丰富的数据类型。
2.掌握数组的定义
数组:一组数据、数据的组合。
有限个相同类型的变量的集合,就被称为数组。
数组中的变量被称为是数组的分量或元素。
它是一种引用数据类型,它的数据是存储在JVM中的堆中的。基本数据类型一般都是存储在栈中。
3.掌握数组的基本使用
数组:
-
数据类型
-
数组名(变量名)
-
数组的长度(存储了多少个变量)
-
数组的元素(多个变量)
byte short int long:0 float double:0.0 boolean:false char:\U0000 一个空格 string:
-
数组的下标(索引)
数据类型【】数组名 =new 数据类型【数组长度】;
数据类型【】数组名 = {元素1,元素2,元素3...};
length 数组的长度
获取数组中的所有数据:(遍历)
4.掌握数组的常用操作
4.1 求最大/小值
public class Deom{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
// 存储成绩
double[] scores = new double[5];
for(int i = 0; i < scores.length; i++) {
System.out.print("请输入第"+(i+1)+"位学生成绩:");
scores[i] = input.nextDouble();
}
double max = scores[0];
double min = scores[0];
for(int i = 1; i < scores.length; i++) {
if(max < scores[i]) {
max = scores[i];
}
if(min > scores[i]) {
min = scores[i];
}
}
System.out.println("最高分:"+max);
System.out.println("最低分:"+min);
}
}
多维数组
一、引用数据类型的名称
java中的数据类型分类:
- 基本数据类型:数据存储是在栈中的(栈中的数据线程不共享,独立的)
- 数值型:整数型(byte short int long) 浮点型(float double)
- 非数值型:char boolean
- 引用数据类型:数据存储是在堆中的(堆中数据线程共享)为了更好的利用
二、数组工具类Arrays
工具类:提升生产效率,帮助我们解决以往比较麻烦内容的一个东西。将数组的一些常见操作实现的比较容易
// 1.直接将数组展示位字符串
String shu = Arrays.toString(arr);
System.out.println(shu);
// 2.数组的升序排序--从小到大
System.out.println(Arrays.toString())
// 3.实现将指定数组中的内容 复制到一个指定长度的新数组中
double[] shu = Arrays.copyOf(arr, 6);
System.out.println(Arrays.toString(shu));
// 4.在arr中寻找指定数字的位置
int shu = Arrays.binarySearch(arr,5);
System.out.println(shu);
// 5. 将一个数组内填充为一个指定的值
double[] arr2 = new double[3];
Arrays.fill(arr2, 8);
System.out.println(Arrays.toString(arr2));
// 6.比较两个数组的内容
double[] shu = {2,3,4,5,9};
double[] shu1={2,3,4,5,9,8,6};
System.out.println(Arrays.equals(shu1, shu));
三、掌握冒泡排序
八大排序要了解
冒泡排序算法的口诀:相邻元素做比较,两两比较小靠前
重复比较,需要考虑循环:外层循环控制行数,内层循环控制每行的内容。
外层循环控制轮数,内层循环控制每轮的比较。
公式:外层循环n-1,内层循环n-1-i。
四、多维数组(二维数组)
多维数组:在java的内存模型并不存在多维数组,但是语法层面上支持。 意味着本质还是一维数组
// 多维数组语法
1 数据类型[][] 数组名 = new 数据类型[x][x];
2 数据类型[][] 数组名 = {{},{},{},{},{}};