什么是方法

方法是程序中最小的执行单元

在之前写的helloworld时main方法是主方法。

这玩意就是C语言的函数

方法可以提高代码的复用性

方法可以提高代码的可维护性

方法的格式

  • 方法需要先定义然后才能调用。

  • 方法的参数分为形参实参

    形参:全称形式参数,指的是方法定义中的参数。

    实参:全称实际参数,指的是方法调用中的参数。

  • 形参和实参必须一一对应要不然会报错

  • 如果方法不需要返回值一般就定义无值即,void,并且不需要写return

  • 方法和方法之间是平级关系,不能相互嵌套定义:就方法之间不能嵌套定义,但是可以嵌套调用。

  • 方法的编写顺序和执行顺序无关

  • return下方不能写代码,因为永远不会执行return下方的代码

方法定义

把一些代码打包在一起,这个过程称之为方法的定义。

最简单的格式(不带参数的)

public static void 方法名(){
	方法体(就是打包起来的代码);
}
//static是静态的意思,具体在后面static关键字详将

带参数的方法定义

public static void 方法名(数据类型 参数1,数据类型 参数2...){
    方法体;
}

带返回值的方法定义

public static 返回值类型 方法名(参数){
    方法体;
    return 返回值;
}

方法的调用

方法定义后并不是直接运行的,需要手动调用才能运行,这个过程叫方法调用。

方法不带参数的调用

方法名();

方法带参数的调用

方法名(参数);

带返回值的方法的调用

//1,直接调用
方法名(实参);
//2.赋值调用,把返回值赋值给遍历
数据类型 变量名=方法名(参数);
//3.输出调用
System.out.println(方法名(实参));

方法的重载

  • 在同一个类当中,定义了多个同名的方法,这些同名的方法具有同种功能

  • 每个方法具体有不同的参数类型参数个数,这些同名的方法,就构成了重载关系。

  • 简记:同一个类中,方法名相同参数不同的方法,叫重载关系,与返回值无关。

    参数不同:个数不同,类型不同,顺序不同(不建议)

    这些重名的方法构成了重载关系、

  • Java虚拟机,会通过参数的不同来区分同名的方法

public class MethodDemo{
    public static int sum(int a,int b){
        return a+b;
    }
    public static int sum(int a int b,int c){
        return a+b+c;
    }
}

方法的内存

方法调用的基本内存原理

方法在调用的时候会进栈,在用完后出栈。

多个方法进栈出栈会遵循栈的定义:从栈顶进栈顶出

这就导致了main方法是第一个进去的最后一个出去的。

栈顶

| 方法2 |

| 方法1 |

|main方法|

|______________________________|

基本数据类型和引用数据类型

基本数据类型:

  • 整数类型
  • 浮点数类型
  • 布尔类型
  • 字符类型

引用数据类型:除了基本数据类型之外的所有类型都叫引用数据类型。

总结:引用数据类型变量存储的是一段地址,基本数据类型存储的一段数据

从内存的角度区解释

  • 基本数据类型就是数据值是存储在自己的空间中

    特点:赋值给其他变量,也是赋的真实值。

  • 引用数据类型数据是存储在其他空间中自己空间存储的是地址值

方法的值定义

举例

public class Text9{
    public static void main(String[] args){
        int number=100;
        System.out.println("调用change方法前:"+number);
        change(number);
        System.out.println("调用change方法后:"+number);
    }
    
    public static void change(int number){
        number=200;
    }
}
//这样即使在方法中修改了number=200但下面输出还是100

流程:

  1. main方法压入栈空间中
  2. 在main方法中先输出100
  3. 调用change方法,将change方法压入栈空间中
  4. 在栈空间中change方法内number从传入的100变成200
  5. 调用change完毕change方法出栈
  6. 此时在main方法继续执行输出语句,number值不受到change方法的任何影响
  7. 这是因为change方法只是影响了它自己里面的number而没有影响到main方法中的number
  8. 这里的number是基本数据类型,可以理解为俩个地址不一样的number

结论:

  • 传递基本数据类型时,传递的是真实的数据,形参的改变,不会影响到实际参数的值。
  • 传递引用数据类型时,传递的是一段地址,形参的改变,会影响到实参数的值。

原文地址:http://www.cnblogs.com/wdadwa/p/java_learning_08.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性