首页 > 技术文章 > Java:方法的含义和调用

Jiemyx 2021-04-08 20:25 原文

方法的含义

  • 修饰符
  • 返回类型
  • break:跳出switch、结束循环 和 return:结束方法,返回一个结果 的区别
  • 方法名:注意规范、见名知其意
  • 参数列表:(参数类型 参数名)、(参数类型... 可变参数名)
  • 异常抛出

package com.jiemyx.oop.demo01;

import java.io.IOException;

public class Demo01 {

    //main方法
    public static void main(String[] args) {

    }

    /*
    修饰符  返回值类型  方法名(...){
        方法体
        return  返回值;
    }
     */

    //return代表结束方法,返回一个结果

    public String sayHello(){
        return "Hello";
    }

    public void hello(){
        return;
    }

    public int max(int a,int b){
        return a>b ? a : b; //三元运算符
    }

    //异常抛出
    public  void  readFile(String file) throws IOException{

    }

    //比如:数组下标越界:Arrayindexoutofbounds
}


方法的调用

  • 递归
  • 静态方法
  • 非静态方法
  • 形参和实参
  • 值传递和引用传递
  • this关键字
package com.jiemyx.oop.demo01;

//学生类
public class Student {
    //静态方法
    public static void say(){
        System.out.println("学生说话了");
    }

    //非静态方法
    public void say2(){
        System.out.println("学生说话了");
    }
}


package com.jiemyx.oop.demo01;

public class Demo02 {

    public static void main(String[] args) {
        //静态方法static,直接调用
        Student.say();

        //非静态方法需要实例化这个类 new 才可以调用
        //new Student().say2();
        //对象类型 对象名  = 对象值;
        Student student = new Student();
        student.say2();
    }

    //static在方法与方法之间的关系
    public static void a(){
        //b();    //没有static的b方法是类实例化之后才存在,所以不能调用b方法
    }

    public void b(){
        a();    //有static的方法是和类一起加载的,所以a方法,直接调用
    }
}

运行结果:
学生说话了
学生说话了


package com.jiemyx.oop.demo01;

public class Demo03 {
    public static void main(String[] args) {
        //实际参数和形式参数的类型要对应
        int add = Demo03.add(1, 2);
        System.out.println(add);
    }

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

运行结果:
3


package com.jiemyx.oop.demo01;

//值传递
public class Demo04 {
    public static void main(String[] args) {
        int a = 1;
        System.out.println(a);

        Demo04.change(a);

        System.out.println(a);
    }

    public static void change(int a){
        a = 10;
    }
}

运行结果:
1
1


package com.jiemyx.oop.demo01;

//引用传递:对象,本质还是值传递
public class Demo05 {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name);    //null

        Demo05.change(person);

        System.out.println(person.name);    //李明
    }

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

}

//定义一个Person类,有一个属性:name
class Person{
    String name;    //默认值null
}

运行结果:
null
李明

推荐阅读