关于java方法调用的回顾

关于java方法调用的回顾

上篇文章中我们回顾了一下java方法的定义,本篇文章中我们来回顾一下方法的调用,这样更利于咱们后续的面向对象的学习😀。

方法的调用

  • 静态方法。

  • 非静态方法。

  • 形参和实参。

  • 值传递和引用传递。

  • this关键字。

1、静态方法

  • 用static修饰。
  • 我们创建一个Student类,然后用Demo类去调用。
java 复制代码
public class Student
{
    public static void say()
    {
        System.out.println("Hello");
    }
}
  • 我们在Demo类中,用main方法调用。
java 复制代码
public class Demo
{
    public static void main(String[] args)
    {
        Student.say();
    }
}

2、非静态方法

  • 需要实例化调用。
  • 对象类型 对象名 = 对象值;
  • 我们之前了解过的Scanner类就是这种调用方式。
  • 我们还是用上面的那个方法,来实例化调用一下。
java 复制代码
public class Student
{
    public void say()
    {
        System.out.println("Hello");
    }
}
  • 我们在Demo类中,用main方法调用。
java 复制代码
public class Demo
{
    public static void main(String[] args)
    {
    	Student student = new Student();//实例化
        student.say();
    }
}

我们执行一下就会发现,两种输出的内容都是一样的。

java 复制代码
Hello

进程结束.....

我们再来看两个方法的互相调用。

java 复制代码
package oop;

public class OopDemo02 {
    public static void a()
    {
        b();
    }
    
    public static void b()
    {
        
    }
}

1、我们可以发现,两个静态方法是可以直接进行调用的。

2、但是如果一个是静态,一个是非静态,就不可以了。

java 复制代码
package oop;

public class OopDemo02 {
    public static void a()
    {
        b();//编译器就会报错!!
    }
    
    public void b()
    {
        
    }
}

因为静态方法,是和类一起加载的,但是非静态方法,是类实例化以后才存在的。

3、形参和实参

java 复制代码
package oop;

public class OopDemo03 {
    public static void main(String[] args) {
        int add=new OopDemo03().add(1,2);//实际参数
        System.out.println(add);
    }

    public int add(int a ,int b)//形式参数
    {
        return a+b;
    }
}
  • 实际参数类型,和形式参数类型要一一对应。

4、值传递和引用传递

  • 值传递
java 复制代码
package oop;

public class OopDemo04 {
    public static void main(String[] args) {
        int a =1;
        System.out.println(a);

        OopDemo04.change(a);

        System.out.println(a);
    }

    //返回值为空
    public static void change(int a)
    {
        a=10;
    }
}

我们执行以下上述内容,发现输出的结果a还是等于1的。

java 复制代码
1
1

进程结束......

这个就是因为,返回值是空,虽然赋值了,但是回到上面还是定义变量的值。

  • 引用传递
java 复制代码
package oop;
//引用传递:是对象,本质还是传递
public class OopDemo05 {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name);//null
        OopDemo05.change(person);
        System.out.println(person.name);//null
    }

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

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

我们执行一下上面的代码,输出一下结果。

java 复制代码
null
落满樱花的羊

进程结束......

因为引用传递,指向的是对象,虽然也传递了一个值,但是是传递给对象,让其改变了属性,至于对象,我们现在可能对它的定义比较模糊,我们后续的文章中会仔细的研究一下对象😉。

5、this关键字

this关键字涉及到了继承,我们会在继承的文章中,详细说明这个关键字的作用!

以上就是所有方法调用的回顾,我们可以结合上一篇文章,方法的定义和面向对象的初识,进一步加深印象,为我们面向对象的文章打好基础。

1、关于java方法定义的回顾

2、关于java方法定义的回顾

相关推荐
majingming1233 小时前
FUNCTION
java·前端·javascript
zopple3 小时前
常见的 Spring 项目目录结构
java·后端·spring
是娇娇公主~4 小时前
C++ 中 std::deque 的原理?它内部是如何实现的?
开发语言·c++·stl
SuperEugene4 小时前
Axios 接口请求规范实战:请求参数 / 响应处理 / 异常兜底,避坑中后台 API 调用混乱|API 与异步请求规范篇
开发语言·前端·javascript·vue.js·前端框架·axios
xuxie995 小时前
N11 ARM-irq
java·开发语言
cjy0001115 小时前
springboot的 nacos 配置获取不到导致启动失败及日志不输出问题
java·spring boot·后端
wefly20176 小时前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8
zhenxin01226 小时前
Spring Boot实现定时任务
java
小江的记录本6 小时前
【事务】Spring Framework核心——事务管理:ACID特性、隔离级别、传播行为、@Transactional底层原理、失效场景
java·数据库·分布式·后端·sql·spring·面试
sheji34166 小时前
【开题答辩全过程】以 基于springboot的校园失物招领系统为例,包含答辩的问题和答案
java·spring boot·后端