Java从入门到精通09==》方法详解:方法格式、方法的所属性、方法的参

本文详细介绍了Java中方法的定义格式,包括修饰符、方法名、参数、方法体和返回值。讨论了方法的属性,如方法必须在类中定义,以及方法的调用方式。还区分了按值调用和按引用调用的概念,并通过示例说明Java中方法参数传递的机制。

Java从入门到精通09

2023.7.26

一、方法格式

格式:
修饰符 方法返回值类型 方法名称(行参)
{方法体;
return[返回值];
}

1.修饰符

修饰符(可有可无)一般有public、protected、private、static、final、abstract。
其中public、protected、private只能出现其一,abstract、final只能出现其一,可以和static组合起来修饰方法。

2.方法名

方法名,随意标识符,建议以英文动词开头,达到见面知意最好,一般小写。

3.行参

行参一般由(参数类型 参数名)组成,可多组,可单组,也可以没有。数组之间用","隔开,用来定义该方法可以接受的参数。

4.方法体

方法体即一些可执行语句,实现某些功能的,语句一般自上而下按序执行。

5.返回值

返回值类型可以是基本类型和引用类型。返回值可有可无,若有返回值,则必须有一条有效的return语句,要没有返回值,则必须使用void定义声明一下。

二、方法的所属性

  1. 方法不能独立定义,方法只能在类体里定义。
  2. 从逻辑意义上来看,方法要么属于类的本身,要么属于该类的一个对象。
  3. 永远不能独立执行发放,执行方法必须使用类或对象作为调用者。

解释:
方法不能独立存在,方法必须属于类或对象,在执行方法时,必须使用类或对象作为调用者,因为方法不是独立存在是实体,方法只能属于类或者对象。
使用static修饰的方法又被称为静态方法或者是类方法,它属于类的本身,可由类直接调用,没有static的方法称为实例方法,不属于这个类的本身,只要实例化即用该方法所在的类创建对象时,才能够由对象调用。

三、方法的参

先了解两个专业术语:
按值调用:方法接收的是调用者提供的值。
按引用调用:方法接收的是调用者提供的变量地址。
方法可以修改按引用调用的值,不能修改按值调用的值。
Java程序设计语言总是按值调用,也就是说方法得到的值是调用者提供的“复制品”,所以方法修改也是修改它的复制品。
注意:调用者调用基本类型的都是数本身的复制品,调用引用类型的是地址值的复制品,也就是说当调用者调用的是引用数据类型的变量是,它是可以更改数据值的!
基本数据类型:

public class Demo {
    public static void main(String[] args) {
            int a=15;
            b(a);
        System.out.println("方法体外:"+a);
    }
    public static void b(int a){
        a=16;
        System.out.println("方法体内:"+a);
    }
}

在这里插入图片描述

图解:
在这里插入图片描述
代码解析:

  1. Java虚拟机分内存给Demo存放字节码文件
  2. 遇到main方法,在栈区开辟一个空间给main
  3. 在栈区的main空间内开辟一个空间给变量a,并赋值15
  4. 遇到b方法,在栈区开辟一个空间给b
  5. b方法有行参,即复制品a,所以在b空间内开辟一个空间给复制品a并赋予初值15
  6. 赋值16给复制品a并输出打印a,并结束b方法
  7. 打印a本体,并结束main方法

引用数据类型

public class Demo1 {
    public static void main(String[] args) {
        Student student=new Student();
        student.age=19;
        student.name="小李啊是";
        student.id=21143;
        a(student);
        System.out.println("a方法外:"+student.id);
    }
    public static void a(Student student){
        student.id=11;
        System.out.println("a方法内:"+student.id);
    }
}
public class Student {
    int age;
    String name;
    int id;
}

在这里插入图片描述
图解:
在这里插入图片描述
代码解析:

  1. Java虚拟机分内存给Demo1和Student存放字节码文件
  2. 遇到main方法,在栈区开辟一个空间给main
  3. 在栈区的main空间内开辟一个空间给变量student,且student的数据类型为Student类型,并在堆区开辟一个空间存放student 的实例变量(栈区的student空间存放的是堆区student的代码值)
  4. 分别给id、name、age赋值
  5. 遇到a方法,在栈区开辟一个空间给a
  6. 在a空间开辟一个空间给student,将main方法内的student中的地址值复制到a方法中的student内
  7. 通过a方法内的地址值指向id并赋值11
  8. 打印输出a方法内加上学生的id,并结束a方法
  9. 打印输出a方法外加上学生的id,并结束main方法

今天到此为止,感谢观看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我头像真的只是只猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值