数组

数组

一 . 一维数组的经典及应用

回顾 :

  1. 变量存储数据

    double xutaizhou = 10;

    double handongbo = 20;

    (xutaizhou+handongbo+…)/29

    **数据类型:**byte short int long float double char String boolean

    变量的命名规则:

    1. 由字母、数字、下划线和美元符号组成,但是数字不能开头。
    2. 采用驼峰命名法(小驼峰) 还可以采用下划线连接方式。
    3. 见名知意
    4. 不能使用关键字
  2. 数组(数据的组合)

(1). 理解数组的作用

1) . 实际上是计算机中一块内存地址的表示

解决了当要存储的变量多时,一个一个变量的表示过于麻烦而学到数组

例 : 100个学生需100个变量,而数组会把他存储到一个变量中

一个变量就是在内存空间划出一块合适的空间

一个数组就是在内存空间划出一串连续的空间

(2). 理解数组的定义

**数组:**存储一组相同数据类型的数据。(数组长度不可变)

数组的四要素:

  1. 数据类型(数组中存储的元素的类型)
  2. 数组名(标识符)
  3. 元素(数组中存储的一个个数据)
  4. 元素下标(索引) 从0开始 数组中每一块空间都有固定的下标

数组:是一种数据结构。

(3). 掌握数组中的基本应用

1)声明数组 int[ ] a; 告诉计算机数据类型是什么

2) 分配空间 a = new int [5]; 告诉计算机分配几个连续的空间

3) 赋值 a [0] = 8; 向分配的格子里放数据 , 赋的值必须与数组类型一致

4) 处理数据 a[0] = a[0]*10;

也可声明数组并分配空间

score = new int[30];

语法: 数据类型 [ ] 数组名 = new 数据类型 [数组长度];

数组的开辟过程:

  1. 在栈中声明/引用
  2. 在堆中进行开辟空间,并且划分区域,进行赋值默认值。
  3. 将堆中的空间地址赋值给栈中的声明。
  4. ![](F:\新建文件夹\截图\截图\Image 005.png)
数组元素不同有不同的初始值

int 类型的初始值默认为0

String类型的初始值默认为null

double 类型的初始值为0.0

char ——>\u000 空字符

boolean——> false

增强for(foreach)

for(数组中元素类型 遍历出来的元素名 : 要遍历的数组名){

}

例 for(int score : scores){

}

(4)冒泡排序

冒泡排序原理:相邻元素进行比较,小的靠前,大的靠后

公式:`外层循环n-1 内层循环n-1-i

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

	int[] arr = {90,20,99,43,35};
	// 外层循环n-1
	for(int i = 0; i < arr.length - 1; i++) {
		// 内层循环n-1-i
		for(int j = 0; j < arr.length-1-i; j++) {
			// 比较并且位置移动
			if(arr[j] < arr[j+1]) {
				// 借助中间变量
				int temp = arr[j]; // 雪碧 -> 空瓶
				arr[j] = arr[j+1]; // 可乐 -> 雪碧
				arr[j+1] = temp; // 空瓶 -> 可乐
			}
		}
	}
	System.out.println(Arrays.toString(arr));
	}
}

(5)插入数字

/**

- 需求:现在有一组数字:90 85 80 63 60  现在要求输入一个数字  并将之也插入到数组中,要求继续保持降序

- @author Charles
  *
   */
  public class Test3 {

  public static void main(String[] args) {
  	Scanner input = new Scanner(System.in);
  	

  // 定义数组  存储数字
  int[] arr = new int[6];
  arr[0] = 90;
  arr[1] = 85;
  arr[2] = 80;
  arr[3] = 63;
  arr[4] = 60;
  System.out.println("==============插入数字之前================");
  for (int temp1 : arr) {
  	System.out.print(temp1+"\t");
  }
  System.out.println("\n================================");
  System.out.print("请输入一个数字:");
  int num = input.nextInt(); // 83
  // 1.寻找插入的位置
  int index = 5;
  for(int i = 0; i < arr.length; i++) {
  	if(arr[i] < num) {
  		index = i;
  		break; // 找到位置之后  应该结束   因为后面的都是青铜
  	}
  }

  // 2.数据移位
  for(int j = arr.length - 1; j > index; j--) {
  	// 将当前位置进行重新赋值  赋值为前一个值
  	arr[j] = arr[j-1];
  }

  // 3.插入数字
  arr[index] = num;

  System.out.println("==============插入数字之后================");
  for(int temp2 : arr) {
  	System.out.print(temp2+"\t");
  }

  }

}
学习方法

数组的操作多数是操作下标,记住这个规律

(6)二分(拆半)查找法

步骤:1) 。 找到数组中间位置的值,并存放一个变量temp中

​ 2). 需查找的值key,拿key和temp比较

​ 3) . 如key > temp 则把数组中间位置作为下一次计算的起点位置 重复(1)和(2)

​ 4) . 如key < temp则把数组中间位置作为下一次计算的终点位置 重复(1)和(2)和(3)

​ 5) . 如key = temp 返回中间位置的下标(元素),完成查找

(7) 掌握Arrays数组工具类的使用

toString() 将数组内的元素转换为一个字符串

sort(); 将数组进行升序排序

copyOf(); 将数组内的元素复制到一个指定长度的新数组中

binarySearch(); 二分查找 前提:升序排序好 查找指定数据的索引

二 . 理解二维数组的应用

int[] arr = new int[4];

Java中是没有二维数组的(内存中的形式没有二维数组)!但是语法上有!

int[][] arr = new int[4][];

// 二维数组
	// double[][]  scores = new double[5][5];
	// double[][] scores = new double[5][];
	// double[][] scores = new double[][]{{},{}};
	double[][] scores = {{1,2,3,4,5},{5,4,7,2,1},{1,3,5,4,9}};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值