数组

数组

一.数据存储:

数组:数组是同一种数据类型的集合容器。

  • 为了能更复杂的存储数据,我们需要用到数组!
  • 在内存中是一连串的内存空间表示,它是有序的。

数组有一维数组和多维数组:

一维数组:
int[] arr = new int[10]; 创建一个长度为10的一维数组
多维数组:
int[][] arr = new int[10][10]; 创建一个一层长度为10,二层各长度为10的二维数组

二. 数组的定义

变量的三要素:变量的数据类型 变量名 变量值

数组有四要素。

  1. 数组元素的数据类型
    相同数据类型的数据。
    数值类型:byte short int long float double
    非数值类型:char boolean String
  2. 数组名(标识符)
    和变量名的规范一致。
  3. 数组的元素
    数组中存储的一个个变量。
  4. 数组的下标(索引)
    数组是有序的,每一个元素都有一个固定的数组下标(序号)。 下标也是从0开始的。
    编程中的序号:大多数场景下,都是从0开始计数

三、数组的基本使用

1.先声明->分配空间->赋值
double[] scores;
scores = new double[5];
scores[0] = 12;
2.声明并分配空间
String[] names = new String[3];
names[0] = "xxx";
3.(前期比较常用)声明并直接赋值
char[] alpha = {‘a','b','c'};
boolean[] flags = new boolean[]{trun,false,false};

数组的注意事项

1.数组只能存储相同数据类型的数据。

char默认空格 String默认null

2.数组的长度一经制定无法改变。

3.数组的元素有默认值。

不同类型的数组元素有不同的默认值:

	byte short int long默认值:0

	float double 默认值:0.0

	boolean 默认值:false

	char 默认值:\u0000 空格

	String(引用数据类型)默认值:null 便是空 表示没有引用的值。

四、数组的常用操作

数组的遍历:将某个内容的所有值元素全部取出来的过程。

遍历方式1:将循环变量i作为数组的下标志,可以通过此致来获取对应的元素。

// 使用普通循环来遍历 一般是用for

forint i = 0; i < 数组的长度; i++{

数组名[i]
}

遍历方式2:增强for循环(foreach)

一维数组遍历
		for (int i = 0; i < arr.length; i++) {
		System.out.print(arr[i]); 
		}
二维数组遍历
		for (int i = 0; i < arr.length; i++) {
			 for (int j = 0; i < arr[i].length; j++) {
				System.out.print(arr[i][j]); 
		}

一维数组增强for遍历
fordouble score : scores){

	System.out.print(score); 

}

二维数组增强for遍历:
fordouble score : scores){
	 fordouble score1 : score)
		 System.out.print(score1); 
}

五.引用数据类型初识

  • Java的程序在运行的时候,数据是按照不同的场景进行不同区域的存储的。

  • Java栈(stack)一般用于存放基本数据类型值,成员变量,还有函数的存放。

  • Java堆(heap)一般用于存放引用数据类型,对象一般是在这里创建内存。
    栈内存的特点:栈内存存储的都是局部变量,变量一旦出了自己的作用域,那么马上会从内存中消失,释放内存空间。

局部变量:如果声明一个变量是在一个方法(函数)的内部声明的,那么该变量就是一个局部变量。

成员变量:就是定义在方法之外,类之内的。

堆内存的特点:堆内存存储的都是对象数据,对象一旦被使用完,并不会马上从内存中消失,而是等待垃圾回收器不定时的把垃圾回收,这时候该对象才会消失,释放内存。

  • 对象如果没有变量引用了,那么该对象就是一个垃圾对象。

  • 凡事以new关键字创建的对象,jvm都会在堆内存中开辟一个新的空间,创建一个新的对象。

数组的好处:对分配到数组对象中每一个数据都分配一个编号(索引值、角标、下标),索引值范围是从0开始。

Arrays包工具类的使用

copyOf(数组,长度) 复制一个数组

Arrays.sort(变量名);[排序]

String info = Arrays.toString(arr);(输出数组)

Arrary.binarySearch();二分查找法

public static int halfSearch(int[] arr, int target){ //二分查找法原理
		// 定义三个变量分别为最大、中间、最小的查找范围
		int max = arr.length-1;
		int min = 0;
		int mid = (max + min)/2; // 变量为索引值
		// 查找循环
		while(true){
			if(target < arr[mid]){
				max = mid-1;
			}else if(target > arr[mid]){
				min = mid+1;
			}else{
				return mid; // 找到了元素
			}
			if(max < min){
			return -1;
			}
			mid = (max + min)/2;
		}
		
	}

冒泡排序:冒泡排序就是定义一个条件,使相邻的两元素挨个比较一次,符合条件交换位置。

创建数组……
for(int j = 0 ; j < arr.length-1 ; j++){ //控制轮数
			for(int i = 0 ; i<arr.length-1-j  ; i++){  // 找出一个最大值  
				//相邻的元素比较
				if(arr[i]>arr[i+1]){
					int temp  = arr[i];
					arr[i] = arr[i+1];
					arr[i+1] = temp;
				}
			}
		}

找出最大值

int max = arr[0];
for(int i = 0 ; i < arr.length ; i++){ // 遍历数组
		if(arr[i] > max) // 最大值条件
			max = arr[i]; // 找出数组中比最大值大的数,并赋值给max
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值