24-02-2021day05_数组

数组

1.1 定义
数组:是一种容器,可以存放多个数据值

数组特点:

  1. 数组是一种引用数据类型
  2. 数组当中的多个数据,类型必须统一
  3. 数组的长度在程序运行期间,不可改变

1.2 数组的初始化
4. 动态初始化(指定长度)
5. 静态初始化(指定内容)

1.3 格式

1.3.1动态初始化数组的格式:
数据类型【】数组名称 = new 数据类型【数组长度】;
解析:左侧数据类型:也就是数组当中保存的数据全都是统一的什么类型
左侧的中括号:代表我是一个数组
左侧的数组名称: 给数组取一个名字
右侧的new:代表创建数组的动作
右侧数据类型:必须和左边的数据类型保持一致
右侧中括号的长度,也就是数组当中,当地可以保存多少个数据,是一个int数字

例子 创建一个数组, 能存放10个double类型的数据

double[] array1 = new double [10];

例子 创建一个数组,能存放5个字符串

String[] array2 = new String [5];

1.3.2 静态初始化的格式:
在创建数组的时候,不直接指定数据个数多少,直接将具体的数据内容进行指定
注意事项:静态初始化虽然没有直接告诉长度,但是根据大括号里面的元素的具体内容,也可以自动推算出来长度

数据类型【】数组名称 = new 数据类型【】{元素1,元素2,…};

例子: 直接创建一个数组,里面装的全是int 数字,具体为5,15,25

int[] array3 = new int []{5,15,25};

省略格式
数据类型【】数组名称 = {元素1,元素2,。。。};

标准格式可以进行拆分格式:
int [] arrayA;
arrayA = new int[]{11,21,31};

动态也可以
int[] arrayB;
arrayB = new int[5];

***使用建议
如果不确定数组当中的具体内容,用动态初始化,如果已经确定了具体的内容,用静态初始化

1.4 访问数组元素进行获取

索引值从0 开始,一直到数组的长度-1为止

 System.out.println(array[0]);

打印数组中的第0个元素

1.5 访问数组元素进行赋值
使用动态初始化的时候,其中的元素将自动拥有默认值
如果是整数类型 默认为0
浮点类型 默认为0.0
字符类型 默认为 ‘\u0000’
布尔类型 默认为false
引用类型 默认为null

array [1] = 123; //将123赋值给数组中的1号元素

java的内存需要划分为5个部分:

  1. 栈 stack: 存放的都是方法中的局部变量;方法的运行一定要在栈当中运行。局部变量:方法的参数,或者是方法{}内部的变量; 作用域:一旦超出作用域,立刻从栈内容中消失。
  2. 堆(Heap): **凡是new出来的东西,都在堆当中。**堆内存里面的数据,都有默认值
    规则: 如果是整数类型 默认为0
    浮点类型 默认为0.0
    字符类型 默认为 ‘\u0000’
    布尔类型 默认为false
    引用类型 默认为null
  3. 方法区(method area): 存储.class 相关信息 包含方法的信息
  4. 本地方法栈(native method stack): 与操作系统有关
  5. 寄存器(pc register): 与cpu相关

1.5 常见问题 所有的引用类型都可以赋值为null值,但是代表其中什么都没有
6. 数组索引越界异常:原来数组中只有3个元素,但却索引了第4个元素(Array Index Out of Bounds Exception).
7. 空指针异常:只定义没有new初始化 相当于一个空壳 Null pointer Exception

1.6 获取数组长度
int[] arrayA = new int[3];
int[] arrayB = {10,20, 30, 40, 50, 05, 50}

数组名称.length
这样会得到一个int数字,代表数组的长度
int len = arrayB.length;
System.out.println(“arrayB数组的长度” + len);

***数组一旦创建,程序运行期间,长度不可改变

1.7 遍历数组
对数组当中的每一个元素进行逐一挨个处理,默认的处理方式就是打印输出。

int[] array = {15, 25, 30, 40, 50};

for(int i = 0; i<5; i++){
System.out.println(array[i]);
}

for(int i = 0; i< array.length; i++){
System.out.println(array[i]);
}
// array.fori自动生成代码

1.8 求出数组中的最值 见code

1.9 数组元素的反转
数组元素的反转
本来的样子【1,2,3,4】
反转【4,3,2,1】
其实就是***对称位置***的元素交换
int min = 0;
int max = array.length-1;

什么时候停止交换?
当min 和max 相等或者说撞上了就 停止交换
或者min>max
换言之min<max 就应该交换

public class ArrayReverse{
	public static void main (String[]args){
		int[]array = {10,20,30,40,50};
		//遍历数组本来的样子
		for(int i =0; i<array.length;i++){
			System.out.println(array[i]);
}

		for(int min=0,max=array.length-1;min<max;min++,max--){
			int temp = array[min];
			array[min] = array[max];
			array[max] = temp;
			}
			// 再次打印数组反转后的样子
			for(int i =0; i<array.length;i++){
			System.out.println(array[i]);
}
	}

2.0 数组作为方法参数
调用方法的时候,向方法的小括号进行传参,传进去的就是数组的地址值

public static void main…
int[] array = {10,20,30,40,50};
printArray(array);

public static void printArray (int [] array){
for…

}

2.1 数组作为方法返回值

一个方法可以有0,1.多个参数,但是只能有0 或1 个返回值,不能有多个返回值
如果希望一个方法当中产生了多个结果数据进行返回,怎么办?
使用一个数组作为返回值类型就行。

任何数据类型 都能作为方法的参数或者返回值类型
数组作为方法的参数,传递进去的是数组的地址值
数组作为方法的返回值,返回的也是数组的地址值

public class ArrayReturn{
	public static void main(String[] args){
		int [] result = calculate (10, 20, 30);
		System.out.println("总和" + result[0];
		System.out.println("平均数" + result[1]);
}

public static int[] calculate(int a, int b, int c){

    int sum = a + b + c;
    int avg = sum/3;
    
	int array[] ={sum,avg};

	return array;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值