又经过了一周的学习,今天对本周学习进行总结
本周学习了Java中数组、方法的相关知识。
数组
数组的定义
格式一:数据类型[] 数组名;
格式二:数据类型 数组名[];
静态初始化
在声明数组的同时,就为数组的每个元素分配初始值。
数据类型[] 数组名=new 数据类型[]{元素一、元素二...};
简化格式:数据类型[] 数组名={元素一、元素二...};
数组的地址值和元素访问
在Java中,数组是一个对象,因此它存储在内存中并有一个地址值。与C或C++等语言不同,Java不允许直接访问或操作内存地址,不能直接获取或修改数组或其元素的内存地址。
可以通过数组引用来访问和操作数组元素。数组引用是指向数组对象的指针,你可以使用它来访问数组中的元素。
可以通过索引来访问数组中的元素
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
// 访问数组元素
System.out.println(numbers[0]); // 输出: 10
System.out.println(numbers[1]); // 输出: 20
// 修改数组元素
numbers[0] = 100;
System.out.println(numbers[0]); // 输出: 100
}
数组的动态初始化
数据类型[] 数组名 = new 数据类型[数组长度];
动态初始化的好处是你可以在运行时根据需要来创建数组,并指定其大小。这使得数组更加灵活,能够适应不同的场景和需求,在动态初始化后,你可以通过索引来为数组中的每个元素赋值
数组的内存图
Java内存分配
栈(Stack):用于存储方法运行时使用的局部变量。每个线程都有自己独立的栈空间,栈中的数据是线程安全的。
堆(Heap):用于存储对象实例和数组。堆内存是Java虚拟机管理的最大的一块内存区域,也是垃圾收集器管理的主要区域之一。堆内存中的数据有一个唯一的地址值,用于被栈中的引用变量所指向。
数组内存分配
1.声明数组变量
当在Java中声明一个数组变量时,这个变量本身(即引用)是存储在栈内存中的。
2.动态初始化数组
通过new关键字动态初始化数组时,会在堆内存中为数组分配一块连续的空间,用于存储数组元素。同时,堆内存中的这块空间会有一个唯一的地址值,这个地址值会被赋值给栈内存中的数组引用变量。
3.访问和修改数组元素
通过数组引用变量和索引来访问和修改数组元素。
方法
在Java中,方法是一段用来完成特定功能的代码片段,它类似于其他编程语言中的函数。Java方法是面向对象编程中的一个核心概念,它们被定义在类里面,用于实现类的行为特征和功能实现。
方法是语句的集合,它们在一起执行一个功能。它是解决一类问题的步骤的有序组合,可以实现独立的功能,并且只有被调用时才会执行。
方法的定义和调用
修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2, ...) {
// 方法体
return 返回值; // 如果返回值类型为void,则此行可以省略
}
修饰符:可选,用于指定方法的访问权限(如public、private等)或其他特性(如static、final等)。
返回值类型:指定方法执行完毕后返回的数据类型。如果方法不返回任何值,则使用关键字void。
方法名:方法的唯一标识符,用于在程序中调用该方法。
参数列表:方法接收外界输入的数据,可以包含多个参数,每个参数由参数类型和参数名组成。参数是可选的,方法可以不包含任何参数。
方法体:包含具体实现功能的Java语句。
方法的特性
必须定义在类里面:Java方法是面向对象编程的一部分,它们必须定义在类内部。
只有被调用才会执行:方法本身不会自动执行,只有在程序的其他部分显式调用时才会执行。
可以被重复使用:这是方法设计的主要目的之一,通过封装具有特定功能的代码块,可以在程序的不同位置多次调用。
支持重载:Java允许在同一个类中定义多个同名方法,只要它们的参数列表不同即可。这称为方法重载,允许同一个方法名称执行不同类型的任务。
静态方法与非静态方法
静态方法:使用static关键字声明的方法。静态方法属于类本身,可以直接通过类名调用,而不需要创建类的实例。静态方法不能访问类的非静态成员变量和非静态成员方法。
非静态方法:未使用static关键字声明的方法。非静态方法属于类的实例,必须通过类的对象来调用。非静态方法可以访问类的所有成员变量和成员方法。
以上是本周学习总结。
下周将学习面向对象和字符串相关知识。