数组的遍历,数组的默认值,数组的创建方式,数组的扩容,值传递和引用传递,数组作为返回值,可变长参数

本文详细探讨了数组的概念,强调其连续存储、相同数据类型及长度固定的特性。阐述了数组的创建、遍历以及可能出现的ArrayOutOfBoundsException。接着讨论了数组的默认值,各类型在未赋值时的初始状态。还介绍了数组扩容的步骤,并提到了System.arraycopy()和Arrays.copyOf()两种系统提供的方法。最后,文章提及了值传递、引用传递以及数组作为返回值的使用场景。
摘要由CSDN通过智能技术生成

数组

一、数组的概念

一组连续的存储空间,存储数据类型相同的一组数据。

特征:连续空间、相同类型、长度固定

二、数组的创建和使用
public class Demo1 {
   
	public static void main(String[] args) {
   
		// 数组的创建
		int[] a = new int[5]; // 创建5个元素大小的int型数组
		// 赋值
		a[0] = 3;
		a[1] = 4;
		a[2] = 5;
		a[3] = 6;
		a[4] = 7;
		// 取值
		System.out.println(a[0]);
		System.out.println(a[1]);
		System.out.println(a[2]);
		System.out.println(a[3]);
		System.out.println(a[4]);
	}
}
三、数组的遍历

遍历是指将数组的所有元素依次操作。

public class Demo2 {
   
	public static void main(String[] args) {
   
		// 数组的创建
		int[] a = new int[500]; // 创建5个元素大小的int型数组
		// 遍历赋值
		// 数组的名称.length得到数组的长度,此处为5
		for (int i = 0; i < a.length; i++) {
    // 注意,此处一定不能用<=
			a[i] = i + 3;
		}
		// 遍历取值
		for (int i = 0; i < a.length; i++) {
   
			System.out.println(a[i]);
		}
	}
}
// 案例:100个学生,随机指定60~100的成绩,遍历赋值,输出所有学生的成绩及平均成绩。
public class Demo3 {
   
	public static void main(String[] args) {
   
		// 数组的创建
		int[] a = new int[100]; // 创建10个元素大小的int型数组
		// 遍历赋值
		// 随机赋值一个60~100的成绩
		Random random = new Random();
		int sum = 0;
		for (int i = 0; i < a.length; i++) {
    // 注意,此处一定不能用<=
			a[i] = random.nextInt(41) + 60;
			sum += a[i];
		}
		// 遍历取值
		for (int i = 0; i < a.length; i++) {
   
			System.out.println("第"+(i+1)+"个学生的成绩为:" + a[i]);
		}
		double avg = (double)sum / a.length;
		System.out.println("平均成绩为:" + avg);
	}
}

注意:数组在使用时,下标不能超出范围,如果超出范围,会提示下标越界问题。

ArrayOutOfBoundsException

四、数组的默认值

数组在分配了空间后,即使不赋值,也可以取值,因为有默认值。

不同类型默认值不一样
数字,默认值都是0,整数都是0,小数都是0.0,char是0对应的ascii码
布尔默认值是false
字符串的默认值是null

注意:当操作一个null值的变量时,会出现NullPointerException。空指针问题。

public class Demo4 {
   
	public static void main(String[] args) {
   
		// 数组有默认值,即使不赋值,也可以使用
		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的函数,用于求一个列表中所有元素的平方和: ```python def square_sum(lst, start=0): total = start for x in lst: total += x**2 return total ``` 该函数有两个参数,lst 表示要求平方和的列表,start 表示平方和的初始值,默认为 0。函数内部定义了一个变量 total,表示平方和的当前值,初始值为 start。函数遍历列表中的所有元素,将其平方后加到 total 中,最后返回 total。 下面进行各项实验: 1. 默认参数的使用 调用函数时可以不传递 start 参数,此时函数会使用默认值: ```python lst = [1, 2, 3, 4] print(square_sum(lst)) # 输出 30 ``` 2. 函数的返回值 该函数返回一个值,即列表中所有元素的平方和。可以将该值存储在变量中,或者直接使用它: ```python lst = [1, 2, 3, 4] result = square_sum(lst) print(result) # 输出 30 print(square_sum([2, 4, 6])) # 输出 56 ``` 3. 变量的作用域 函数内部定义的变量 total 的作用域仅限于函数内部,函数外部无法访问该变量: ```python lst = [1, 2, 3, 4] square_sum(lst) print(total) # 报错:NameError: name 'total' is not defined ``` 4. 在函数内部使用全局变量 可以在函数内部使用全局变量,但需要在函数内部声明该变量为 global: ```python total = 10 def square_sum(lst, start=0): global total total += start for x in lst: total += x**2 lst = [1, 2, 3, 4] square_sum(lst) print(total) # 输出 30 ``` 5. 在函数内部修改全局变量的值 可以在函数内部修改全局变量的值,不需要声明为 global。但需要注意,如果重新分配了变量名称,那么该变量就成了局部变量,不再是全局变量: ```python total = 10 def square_sum(lst, start=0): total = start # 重新分配变量名称 for x in lst: total += x**2 lst = [1, 2, 3, 4] square_sum(lst) print(total) # 输出 10,未被修改 ``` 6. 以可变数据类型作为参数,在函数内部对其进行修改,并检验函数调用前后对应变量的值的变化情况 可以将列表作为参数传递给函数,并在函数内部修改该列表。需要注意,在函数内部修改后,原来的列表也会被修改,因为列表是可变数据类型: ```python def square_sum(lst, start=0): total = start for i in range(len(lst)): lst[i] = lst[i]**2 total += lst[i] return total lst = [1, 2, 3, 4] result = square_sum(lst) print(lst) # 输出 [1, 4, 9, 16] print(result) # 输出 30 ``` 7. 重新赋值与修改 重新赋值和修改的区别在于,重新赋值会创建一个新的变量,而原来的变量不会被修改;而修改则是在原来的变量上进行操作。 例如,下面的代码中,函数内部重新赋值了参数 x,但原来的变量 x 并未被修改: ```python def func(x): x = x + 1 print("Inside func, x =", x) x = 10 func(x) print("Outside func, x =", x) ``` 输出结果为: ``` Inside func, x = 11 Outside func, x = 10 ``` 而下面的代码中,函数内部对参数 lst 进行了修改,原来的列表也被修改了: ```python def func(lst): lst.append(4) print("Inside func, lst =", lst) lst = [1, 2, 3] func(lst) print("Outside func, lst =", lst) ``` 输出结果为: ``` Inside func, lst = [1, 2, 3, 4] Outside func, lst = [1, 2, 3, 4] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值