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


相关文章
|
2月前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
211 1
|
2月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
285 0
|
3月前
|
Java API 容器
Java基础学习day08-2
本节讲解Java方法引用与常用API,包括静态、实例、特定类型方法及构造器引用的格式与使用场景,并结合代码示例深入解析。同时介绍String和ArrayList的核心方法及其实际应用。
155 1
|
2月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
238 18
|
2月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
266 7
|
2月前
|
Java 编译器 Go
【Java】(5)方法的概念、方法的调用、方法重载、构造方法的创建
Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性。方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。这种就属于驼峰写法下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。
201 4
|
3月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
141 11
|
2月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
289 5
|
3月前
|
Java
Java基础学习day08-作业
本作业涵盖Java中Lambda表达式的应用,包括Runnable与Comparator接口的简化实现、自定义函数式接口NumberProcessor进行加减乘及最大值操作,以及通过IntProcessor处理整数数组,实现遍历、平方和奇偶判断等功能,强化函数式编程实践。
76 5
|
3月前
|
Java 程序员
Java基础学习day08
本节讲解Java中的代码块(静态与实例)及其作用,深入介绍内部类(成员、静态、局部及匿名)的定义与使用,并引入函数式编程思想,重点阐述Lambda表达式及其在简化匿名内部类中的应用。
149 5