何谓方法?
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类和对象之中
- 方法在程序中被创建,在其他方法被引用
- 设计方法的原则:方法的本意是功能块,就是实现某种功能的语句块的集合。设计方法时,最好是一个方法只实现一个功能。
方法的定义
- Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:
- 方法包括一个方法头和一个方法体
- 修饰符:可选,定义该方法的访问类型。
- 返回值类型:方法可能会有返回值类型。一般是事先约定的返回值的数据类型,在没有返回值的情况下,使用关键字void。
- 方法名:方法的实际名称,方法名和参数表共同构成方法签名。
- 参数类型:可选,参数像是一个占位符。当方法被调用时,传递值(实参)给参数(形参)。
- 形式参数:在方法被调用时用于接受外界输入的数据。
- 实参:调用方法时实际传给方法的数据。
- 参数列表:指方法的参数类型、顺序和参数的个数。
- 方法体:包含具体的语句,定义该方法的功能。
修饰符 返回值类型 方法名(参数类型 参数名){
……
方法体
……
return 返回值;
}
方法调用
- 调用方法:对象名.方法名(实参列表)
- Java支持两种调用方法的方式,根据方法是否返回值来选择
- 当方法返回一个值时,方法调用通常被当作一个值。
int large = max(22,97);
- 方法返回值是void时,方法调用一定是一条语句。
System.out.println("Hello,World!!!")
- 拓展了解:值传递(Java)和引用传递
Java中,方法中所有参数都是“值传递”,也就是“传递的是值的副本”,也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件改变不会影响原件。
- 基本数据类型参数的传值:传递的是值得副本,副本改变不会影响原件。
- 引用类型参数的传递:传递的是值的副本,但是引用类型指的是“对象的地址”。因此,副本和原参数都指向同一个“地址”,改变“副本指向地址对象的值,也意味着原参数指向对象的值也发生了改变”。
值传递与引用传递
值传递与引用传递
添加链接描述
添加链接描述
package com.oop.demo01;
public class Demo05 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);
change(person);
System.out.println(person.name);
}
public static void change(Person person){
person.name = "panpan";
}
}
class Person{
String name;
}
package com.panpan.method;
public class Demo01 {
public static void main(String[] args) {
int sum = add(3,2);
System.out.println(sum);
System.out.println("----------");
Demo01 demo = new Demo01();
int num = demo.max(22,22);
System.out.println(num);
}
public static int add(int a,int b){
return a+b;
}
public int max(int a,int b){
int result = -1;
if (a==b){
System.out.println("a==b");
return 0;
}
if (a>b){
result = a;
}else {
result = b;
}
return result;
}
public static int add(double a,int b){
return (int)a+b;
}
public static int add(int a,int b,int c){
return a+b+c;
}
public static int add(int b,double a){
return (int)a+b;
}
}
方法的重载
- 重载就是在一个类中,有相同的方法(函数)名称,但是形参不同的方法(函数)。
- 重载的方法,实际是完全不同的方法,只是名称不同而已。
- 方法重载的规则:
- 方法名称必须相同
- 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等构成重载)
- 方法的返回类型可以相同也可以不同
- 仅仅返回值类型不同不足以成为方法的重载
- 只有形参的名称不同不构成方法的重载
- 实际理论:
方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐一匹配,以选择对应的方法,如果匹配失败,则编译器报错。
注意事项
- 实参的数目,数据类型和次序必须和调用的方法声明的形式参数列表匹配。
- return语句终止方法的运行并指定要返回的数据。
- Java中进行方法调用中传递参数时,遵循值传递的原则(传递的都是数据的副本)。
- 基本类型传递的是该数据值的copy值。
- 引用类型传递的是该对象引用的copy值,但指向的是同一个对象。