1.Java的方法

  • Java方法是语句的集合,它们在一起执行一个功能,类似于其它语言的函数
    方法是解决一类问题的步骤的有序组合
    方法包含于类或对象中
    方法在程序中被创建,在其他地方被引用
  • 设计方法的原则:
    方法的本意是功能块,就是实现某个功能的语句块的集合。
    设计方法时,最好保持方法的原子性,一个方法只完成1个功能,有利于后期的扩展。
  • Java定义一个方法包含以下语法:
修饰符  返回值类型  方法名(参数类型 参数名){
    ---
    方法体
    ---
    return 返回值;
}
  • 方法包含一个方法头和一个方法体,一个方法的所有部分:

1、修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
2、返回值类型︰方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值时,returnValueType是关键字void。
3、方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
4、参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量,参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
形式参数:在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。

5、方法体:方法体包含具体的语句,定义该方法的功能。

2.方法调用

  • 调用方法: 对象名.方法名(实参列表)
  • Java支持两种调用方法的方式,根据方法是否返回值来选择。
    1、当方法返回一个值的时候,方法调用通常被当做一个值。
public static int max(double num1,double num2){
    double result = 0;
    if(num1<num2){
        result = num2;
    }else if (num1>num2){
        result = num1;
    }else{
        System.out.println("相等");
        return  0;
    }
    return  (int)result;
}

int larger = max ( 30,40); //程序调用

2、如果方法返回值是void,方法调用一定是一条语句。

public void println(String x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

System.out.print1n( "Hello,kuangshen! " );//程序调用

注意:java都是值传递

  • 方法调用实例
public class C1FangFaFuXi {
    //main方法
    public static void main(String[] args) {
        /**
         * 调用其他类的 静态方法
         */
        Man.panDing();
//        Man.main();

        /**
         * 调用其他类的 非静态方法
         *   Man man;  声明
         *   man = new Man();    创建新对象
         *
         *   实例化这个对象
         *   对象类型  对象名 =  对象值
         *   Man man1 = new Man();
         */

        Man man1 = new Man();
        man1.panDing2();

        /**
         * 这里的 1 23 是实际参数
         * 而 add 方法中的 a b 是 形式参数
         * 并且 实际参数和形式承参数的类型要对应
         */
        int a = C1FangFaFuXi.add(1,23);
        System.out.println(a);  // 24


        int zhichuandi = 12;
        C1FangFaFuXi.add(zhichuandi,12);
        /**
         * 这里的 zhichuandi 是12,这是因为java 是值传递
         */
        System.out.println(zhichuandi); // 12
        zhichuandi= C1FangFaFuXi.add(zhichuandi,12);
        /**
         * 将结果赋给了zhichuandi 因此结果改变
         */
        System.out.println(zhichuandi); //24

        Person person = new Person();
        System.out.println(person.name);    // null

        C1FangFaFuXi.change(person);
        System.out.println(person.name);    //张麻子

    }

    /**
     * 修饰符   返回值类型  方法名
     * break是跳出循环
     * return 是方法结束,并返回一个结果
     *
     * 在 静态方法中 无法 直接调用 非静态方法
     * 这是因为,静态方法 是和类一起加载的
     */
    public static void test(){

        return;
    }

    /**
     * 非静态方法  在 类实例化 之后才会存在
     * @return
     */
    public String test1(){
        return "";
    }

    public static int add(int a,int b){
        return a+b;
    }

    public static void change(Person person){
        /**
         *   perosn是一个对象:指向的---> Perosn person = new Perosn();
         *   这是一个具体的人,可以改变属性!
         */
        person.name = "张麻子";
    }
}

class Person{
    /**
     *  不初始化(也就是 不赋值)默认的值为 null
     */
    String name;
}