文章目录
- 方法
- 数组
方法
- 定义方法的格式详解
修饰符 返回值类型 方法名(参数列表){
//代码省略...
return 结果;
}
- 修饰符: public static 固定写法
- 返回值类型: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者
- 参数列表:方法在运算过程中的未知数据,调用者调用方法时传递
- return:将方法执行后的结果带给调用者,方法执行到 return ,整体方法运行结束
注意:
定义方法的时候必须要有俩个明确 - 明确返回值类型:在下图代码中,getSum()方法所返回的是一个整型,表示我们也需要用整型的变量来接收数据。
- 明确参数列表:方法中需要传递的是俩个整型的参数列表,表示当我们传递形参的时候也需要传递俩个整型的参数。
public class Method_Demo2 {
public static void main(String[] args) {
// 调用方法getSum,传递两个整数,这里传递的实际数据又称为实际参数
// 并接收方法计算后的结果,返回值
int sum = getSum(5, 6);
System.out.println(sum);
}
/*
定义计算两个整数和的方法
返回值类型,计算结果是int
参数:不确定数据求和,定义int参数.参数又称为形式参数
*/
public static int getSum(int a, int b) {
return a + b;
}
}
流程图解:
- 定义方法的注意事项
- 定义位置,类中方法外面。
- 返回值类型,必须要和 return 语句返回的类型相同,否则编译失败 。
- 不能在 return 后面写代码, return 意味着方法结束,所有后面的代码永远不会执行,属于无效代码。
- 方法调用形式
- 直接调用:直接写方法名调用
- 赋值调用:调用方法,在方法前面定义变量,接收方法返回值
- 输出语句调用:
- 方法重载
- 方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。
- 参数列表:个数不同,数据类型不同,顺序不同。
- 重载方法调用:JVM通过方法的参数列表,调用不同的方法。
典例:
我们经常使用的System.out.println()方法就是通过方法重载的方式实现,因此我们就可以使用其输出不同数值类型的值
代码举例说明:
public class Main {
public static void introduceMyself(String name){
System.out.println("我的名字是:" + name);
}
public static void introduceMyself(Integer age){
System.out.println("年龄:" + age);
}
public static void introduceMyself(String name, int age){
System.out.println("我的名字是:" + name + ",年龄:" + age);
}
public static void introduceMyself(int age , String name){
System.out.println("我的名字是:" + name + ",年龄:" + age);
}
public static void main(String[] args) {
introduceMyself("小明");
introduceMyself(18);
introduceMyself("小明", 18);
introduceMyself(18, "小明");
}
}
数组
数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。
- 数组的定义
-
数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
数组定义格式详解:- 数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
- [] : 表示数组。
- 数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。
- new:关键字,创建数组使用的关键字。
- 数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
- [长度]:数组的长度,表示数组容器中可以存储多少个元素。
注意:数组有定长特性,长度一旦指定,不可更改。
-
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};
-
数据类型[] 数组名 = {元素1,元素2,元素3…};
- 数组的访问
- 索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。
- 数组的长度属性: 每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的长度,语句为: 数组名.length
示例代码:
public class Main {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
for (int i = 0; i < array.length ; i++){
System.out.println(array[i]);
}
}
}
从代码中,我们可以看到,我们可以通过定义数组的方式三来快速定义一个数组容器,并且通过循环语句对数组进行遍历,因为我们可以通过数组名.length来获取数组的长度,所以我们知道该循环的次数,因此我们可以直接通过for循环来遍历数组元素。
- 数组原理内存图
内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。
- Java虚拟机的内存划分
区域名称 | 作用 |
---|---|
寄存器 | 给CPU使用,和我们开发无关。 |
本地方法栈 | JVM在使用操作系统功能的时候使用,和我们开发无关。 |
方法区 | 存储可以运行的class文件。 |
堆内存 | 存储对象或者数组,new来创建的,都存储在堆内存。 |
方法栈 | 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。 |
- 数组在内存中的存储
- 创建一个数组时
- 创建俩个数组时
- 两个变量指向一个数组
这里我们可以看到,当我们初始化一个int类型的数组时,该数组中的值全默认为0,别的数据类型也相同,然后我们对数组进行了赋值处理,我们将该数据的内存地址赋值给了另外一个数组,此时arr2的内存地址也是OX1A这时,我们对arr2进行赋值时,会影响到内存地址中的值,这是典型的引用传递。
- 数组作为方法参数和返回值
- 数组作为方法参数传递,传递的参数是数组内存的地址。
- 数组作为方法的返回值,返回的是数组的内存地址
注意:
当涉及到内存地址传递的时候,就要考虑到值的改变了,变量被赋值为了内存地址的时候,修改该地址中的值也会影响原来变量中的值。
欢迎jjava热爱者了解文章,作者将会持续更新中,期待各位友友的关注和收藏。。。