JAVA-方法学习

简介: JAVA-方法学习

方法的定义


JAVA语言中的“方法”(Method)在其他语言当中也可能被称为“函数”(Function)。对于一些复杂的代码逻辑,如果希望重复使用这些代码,并且做到“随时任意使用”,那么就可以将这些代码放在一个大括号“{}”当中,并且起一个名字。使用代码的时候,直接找到名字调用即可。


方法头和方法体的定义


定义方法的部分


修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。

方法名: 是方法的实际名称。方法名和参数表共同构成方法签名。

参数类型: 参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变

量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以

不包含任何参数。

方法体:方法体包含具体的语句,定义该方法的功能。


修饰符  返回值类型  方法名   (参数类型  参数名){
            ***
            方法体
            ***
        }

自定义的方法实例


比大小


public class Max {
    public static void main(String[] args) {
        System.out.println(max(20, 20));
    }
    public static  int max(int num1,int num2){
        int result =0;
        if (num1==num2){
            System.out.println("两数相等");
            return 0 ;     //返回会输出0
        }
        if(num1>num2){
            result = num1;
        }else{
            result = num2;
        }
        return  result;
    }
}

方法的重载


重载就是在一个类中,有相同的函数名称,但形参不相同的函数


方法重载的规则


  1. 方法名称必须相同
  2. 参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)
  3. 方法的返回类型不做要求
  4. 仅仅返回类型不同不足以成为方法的重载


命令行传参


在Dos命令中编译的注意事项:

2309168-20210730181824172-1237497284.png


Dos命令传参遇到的问题


问题一:编码问题


text.java:5: 错误: 编码GBK的不可映射字符


解决: 在编译时改为UTF-8 格式


javac -encoding UTF-8 text.java


问题二:错误: 找不到或无法加载主类 text


解决因为涉及到多个独立库之间的调用,因此要回到根目录下执行

但是编译时需要在最详细的目录下编译,具体到文件


问题三:java text.text This is China


在Dos命令下传入参数-->This is China

即在运行Java 文件后直接导入 参数


源码呈现


package text;
public class text {
    public static void main(String[] args) {
        for (int i = 0; i < args.length ; i++) {  //fori 回车 快速写一个for循环
            System.out.println("agr["+i+"]:"+args[i]);
        }
    }
}

调用可变参数


释意:参数的不确定个数定义(数组的一种呈现)

但一个方法只能定义一个可变参数,且需要定义在该方法参数的最后


可变参数的错误定义


public static int printMax(double...x,int y)
报错:
Vararg parameter must be the last in the list

可变参数的正确定义


public class text {
    public static void main(String[] args) {
        printMax(12,12,23,34,56,7,8);
    }
   public static void printMax(int...number){
        int result = 0;
        result = number[0];
       for (int i = 0; i <number.length ; i++) {
           if (number[i]>result){
               result = number[i];
           }
       } //最大值为:56
       System.out.println("最大值为:"+result);
   }
}
public void test(int...i)
test.test(1,2,3,4,56,7)


对参数i数组化,使其可以只定义一个变量表示多个元素节省变量的定义数量


public class text {
    public static void main(String[] args) {
        text test = new text();
        test.test(1,2,3,4,56,7);
    }
    public void test(int...i){
        System.out.println(i[0]);
        System.out.println(i[1]);
        System.out.println(i[2]);
        System.out.println(i[3]);
    }
}

定义静态参数变量的好处(便于调用)


public class text {
    public static void main(String[] args) {
      test(1,2,3,4,56,7);
    }
    public static void test(int...i) {
        System.out.println(i[0]);
    }
}


在此部分


public static void main(String[] args) {
      test(1,2,3,4,56,7);
    }


可以省去


text test = new text();
  test.test(1,2,3,4,56,7);

的定义过程(对新手友好,可以直接调用写好的方法)


方法中的递归思想


示例一:用递归实现阶乘


public class text {
    public static void main(String[] args) {
        System.out.println(f(4));//结果为24
    }
    //实现阶乘的递归写法
    public static int f(int n){
        if (n==1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }
}

实例二:用递归实现累加


public class text {
    public static void main(String[] args) {
        System.out.println(f(4));//结果为10
    }
    //实现阶乘的递归写法
    public static int f(int n){
        if (n==1){
            return 1;
        }else{
            return n+f(n-1);
        }
    }
}
相关文章
|
2月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
84 9
|
2月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
47 4
|
2月前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
55 4
|
2月前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
27 1
|
3月前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
62 17
|
2月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
139 4
|
2月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
2月前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
307 2
|
2月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。