Java基础学习——方法

简介: 赋值调用的好处是当程序复杂时,若想调用某个方法的结果,就可以直接用一个变量来代替,便于代码的编写。同样,在将方法的结果赋值给变量后,不打印输出该变量,控制台输出也为空

前言


本文将介绍有关Java面向对象编程的知识之一:方法;其中包括方法的概念,三类方法的格式、方法的重载以及方法的内存


方法的概念


方法是程序中最小的执行单元


方法定义:将一些代码打包在一起的过程


方法调用:在定义方法以后,手动输入代码调用已定义的方法


方法的三类格式


1.简单的方法定义与调用


方法定义


public static void 方法名(){
  方法体;
 }


方法调用


方法名(参数)


用IDEA来实现一下


public class test1 {
    public static void main(String[] args) {
        test();
    }
    //方法定义
    public static void test(){
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
    }
}


2.带参数的方法定义与调用


首先要先介绍参数的两种形式


1.形参(形式参数):指方法定义中的参数

2.实参(实际参数):指方法调用中的参数


方法定义


public static void 方法名(参数1,参数2...){
  方法体;
 }


方法调用


方法名(参数1,参数2,参数3…)


用IDEA来实现一下


public class 求和 {
    public static void main(String[] args) {
        sum(10,20);
    }
  //方法调用
    public static void sum(int num1 , int num2){
        int result = num1 + num2;
        System.out.println("两个数的和是:"+ result);
    }
}

cac47fcbc4814627ab63a5112d347de4.png


3.带返回值的方法定义与调用


方法定义


public static 返回值类型 方法名(参数1,参数2,参数3...){
  方法体;
  return返回值;
 }


方法调用


1.直接调用


方法名(实参)


public class 求和 {
    public static void main(String[] args) {
        sum(10,20);
    }
    public static int sum(int num1 , int num2){
        int result = num1 + num2;
        System.out.println(result);
        return result;
    }
}

cb19b4431dae4ba0addb1a336205127b.png


在使用直接调用时,要在方法定义中写上打印输出语句


直接调用方法是不使用返回值。就像上述程序中的result值为30,但是既没有在main方法中调用result,又没有在sum方法中调用result,所以控制台输出为空


c434629656b04a209828449b9a0845ed.png


2.赋值调用


整数类型 变量名 = 方法名(实参)


public class 求和 {
    public static void main(String[] args) {
        int result = sum(10,20);
        System.out.println(result);
    }
    public static int sum(int num1 , int num2){
        int num = num1 + num2;
        return num;
    }
}

cb19b4431dae4ba0addb1a336205127b.png


赋值调用的好处是当程序复杂时,若想调用某个方法的结果,就可以直接用一个变量来代替,便于代码的编写

同样,在将方法的结果赋值给变量后,不打印输出该变量,控制台输出也为空


4631eb8ea5314402a76d97996e3c50b9.png


3.输出调用


System.out.println(方法名(实参))


public class 求和 {
    public static void main(String[] args) {
        System.out.println(sum(10,20));
    }
    public static int sum(int num1 , int num2){
        int result = num1 + num2;
        return result;
    }
}

cb19b4431dae4ba0addb1a336205127b.png


输出调用的好处是代码简洁,在main方法中只需要写一句输出语句即可,不用像上面两种一样增添新的语句


方法的重载


概念


在同一类中,方法名相同,但是参数的个数/类型/顺序不同的方法,构成重载关系


重载判断


下面会有四道关于判断两个方法是否构成重载的例题


public class MethodDemo{
  public static void fn(int a){
    //方法体
  }
  public static void fn(int a){
  //方法体
  }
}


这两个不构成重载,因为方法名相同,参数也相同


public class MethodDemo{
  public static void fn(int a){
    //方法体
  }
  public static void fn(int a , int b){
  //方法体
  }
}


这两个构成重载,因为在同一类中且方法名相同的情况下,参数个数不同


public class MethodDemo1{
  public static void fn(int a){
    //方法体
  }
}
public class MethodDemo2{
  public static void fn(int a){
  //方法体
  }
}


这两个不构成重载,因为不在同一类中


public class MethodDemo{
  public static void fn(int a){
    //方法体
  }
  public static void fn(double a ){
  //方法体
  }
}


这两个构成重载,因为在同一类中且方法名相同的情况下,参数类型不同


方法的内存


1.方法调用的基本内存原理


方法运行时使用的内存是栈,原理是先进后出,运行完就出栈;新定义出来的,带“new”的都在堆内存中开辟了一个小空间


b95724c887c14c86b76b8fcf47fb7669.png


2.方法传递基本数据类型的内存原理


785e36174a3b4c87b6f286aac8b949ec.png


变量中存储的是地址值,引用了其他空间中数据


3.方法传递引用数据类型的内存原理


在传递基本数据类型时,传递的是真实数据的值,形参的改变并不影响实参的值


public class test2 {
    public static void main(String[] args) {
        int number = 100;
        System.out.println("调用前的值:" + number);
        change(number);
        System.out.println("调用后的值:" + number);
    }
    public static void change(int number) {
        number = 200;
    }
}

6cf07e424820444bbdc7c5b295ae5991.png


在change方法中改变的number值由于没有返回值也没有输出语句,所以调用前后的值相同,如果我们将代码的方法定义改为 带返回值类型 的方法定义时,就可以实现数据传递了


public class test2 {
    public static void main(String[] args) {
        int number = 100;
        System.out.println("调用前的值:" + number);
        System.out.println("调用后的值:" + change(number));
    }
    public static int  change(int number) {
        number = 200;
        return number;
    }
}


0e219723fa0648d4b9214053353848d3.png


方法的注意点


1.如果定义了一个方法后却不调用,那么该方法就不会执行


58a5d69b62d247ccb54ec4f7c903bc33.png


2.方法之间是平级关系,不可嵌套,所以在定义方法的时候不能写在main方法中,否则会报错


add2e8aaa1224405b6de219d2266c1f6.png


3.方法的编写顺序和执行顺序无关


6e2d62d892324a32ad4e40b638e2e797.png


4.若方法返回值类型为void,则该方法无返回值,可以省略return语句,但如果要写,则return后不能加具体数据,否则会报错


a2e9fd59facc4a519db06e176d0e5654.png


结语


方法是Java中重要的知识点,特别是方法的内存以及重载是面试时容易被问到的,所以掌握基础知识点很重要,练习也必不可少,具体练习在《每章练习》专栏中,感兴趣的可以做一下文章中相关习题以巩固知识。


相关文章
|
11天前
|
《从头开始学java,一天一个知识点》之:方法定义与参数传递机制
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问"`a==b`和`equals()`的区别",大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 🚀 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。上篇:《输入与输出:Scanner与System类》 | 下篇剧透:《方法重载与可变参数》。
43 25
Java快速入门之数组、方法
### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。
|
5天前
|
重学Java基础篇—Java Object类常用方法深度解析
Java中,Object类作为所有类的超类,提供了多个核心方法以支持对象的基本行为。其中,`toString()`用于对象的字符串表示,重写时应包含关键信息;`equals()`与`hashCode()`需成对重写,确保对象等价判断的一致性;`getClass()`用于运行时类型识别;`clone()`实现对象复制,需区分浅拷贝与深拷贝;`wait()/notify()`支持线程协作。此外,`finalize()`已过时,建议使用更安全的资源管理方式。合理运用这些方法,并遵循最佳实践,可提升代码质量与健壮性。
18 1
Java中的异常处理方法
本文深入剖析Java异常处理机制,介绍可检查异常、运行时异常和错误的区别与处理方式。通过最佳实践方法,如使用合适的异常类型、声明精确异常、try-with-resources语句块、记录异常信息等,帮助开发者提高代码的可靠性、可读性和可维护性。良好的异常处理能保证程序稳定运行,避免资源泄漏和潜在问题。
|
19天前
|
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
45 5
Java容器及其常用方法汇总
Java Collections框架提供了丰富的接口和实现类,用于管理和操作集合数据。
Java容器及其常用方法汇总
|
1月前
|
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
166 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
1月前
|
java.time常用方法汇总
`java.time` API 是从 Java 8 开始引入的时间日期处理库,旨在替代老旧的 `java.util.Date` 和 `Calendar`。它提供了更简洁、强大和灵活的方式处理日期、时间、时区及时间间隔,支持全球化和时间计算需求。API 包含获取当前时间、创建指定时间、解析和格式化字符串、进行加减运算、比较时间、获取年月日时分秒、计算时间间隔、时区转换以及判断闰年等功能。示例代码展示了如何使用这些功能,极大简化了开发中的时间处理任务。
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。
Java 高级面试技巧:yield() 与 sleep() 方法的使用场景和区别
本文详细解析了 Java 中 `Thread` 类的 `yield()` 和 `sleep()` 方法,解释了它们的作用、区别及为什么是静态方法。`yield()` 让当前线程释放 CPU 时间片,给其他同等优先级线程运行机会,但不保证暂停;`sleep()` 则让线程进入休眠状态,指定时间后继续执行。两者都是静态方法,因为它们影响线程调度机制而非单一线程行为。这些知识点在面试中常被提及,掌握它们有助于更好地应对多线程编程问题。
102 9
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等