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);
        }
    }
}
相关文章
|
11天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
50 4
|
21天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
42 17
|
11天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
15天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
32 2
|
19天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
23天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
17 3
|
23天前
|
Java 开发者
在Java多线程编程中,选择合适的线程创建方法至关重要
【10月更文挑战第20天】在Java多线程编程中,选择合适的线程创建方法至关重要。本文通过案例分析,探讨了继承Thread类和实现Runnable接口两种方法的优缺点及适用场景,帮助开发者做出明智的选择。
16 2
|
23天前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
15 1
|
23天前
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
28 1
|
23天前
|
Java
在Java多线程编程中,`wait()`和`notify()`方法的相遇如同一场奇妙的邂逅
在Java多线程编程中,`wait()`和`notify()`方法的相遇如同一场奇妙的邂逅。它们用于线程间通信,使线程能够协作完成任务。通过这些方法,生产者和消费者线程可以高效地管理共享资源,确保程序的有序运行。正确使用这些方法需要遵循同步规则,避免虚假唤醒等问题。示例代码展示了如何在生产者-消费者模型中使用`wait()`和`notify()`。
24 1