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);
        }
    }
}
相关文章
|
4天前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
34 18
|
17天前
|
监控 Java 调度
【Java学习】多线程&JUC万字超详解
本文详细介绍了多线程的概念和三种实现方式,还有一些常见的成员方法,CPU的调动方式,多线程的生命周期,还有线程安全问题,锁和死锁的概念,以及等待唤醒机制,阻塞队列,多线程的六种状态,线程池等
79 6
【Java学习】多线程&JUC万字超详解
|
9天前
|
Java
Java的方法详解
Java的方法是类中的重要组成部分,用于定义类的行为。方法可以接收参数、执行操作并返回结果。其基本语法包括返回类型、方法名、参数列表和方法体。方法支持重载,即同名但参数不同的多个方法;静态方法则直接通过类名调用,无需实例化。此外,Java还支持可变参数,允许方法接收不定数量的参数。通过访问修饰符如`public`、`protected`、`private`,可以控制方法的可见性。方法是实现类功能的基本单元,增强了程序的灵活性和复用性。
|
16天前
|
存储 Java 程序员
优化Java多线程应用:是创建Thread对象直接调用start()方法?还是用个变量调用?
这篇文章探讨了Java中两种创建和启动线程的方法,并分析了它们的区别。作者建议直接调用 `Thread` 对象的 `start()` 方法,而非保持强引用,以避免内存泄漏、简化线程生命周期管理,并减少不必要的线程控制。文章详细解释了这种方法在使用 `ThreadLocal` 时的优势,并提供了代码示例。作者洛小豆,文章来源于稀土掘金。
|
21天前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
28 5
|
23天前
|
安全 Java 开发者
【技术咖必看】Java异常处理新境界:throws关键字,打造万无一失的方法签名!
【技术咖必看】Java异常处理新境界:throws关键字,打造万无一失的方法签名!
32 3
|
23天前
|
安全 Java 程序员
【程序猿逆袭指南】Java高手的秘密武器:throws关键字,让你的方法签名霸气侧漏!
【程序猿逆袭指南】Java高手的秘密武器:throws关键字,让你的方法签名霸气侧漏!
15 3
|
24天前
|
Java Spring 容器
Java获取接口的所有实现类方法
这篇文章介绍了在Java中获取接口所有实现类的方法,包括使用JDK的ServiceLoader(SPI机制)和Spring Boot中的@Autowired自动注入及ApplicationContextAware接口两种方式。
43 1
|
25天前
|
监控 Java API
提升 Java 后台性能的十大方法
提升 Java 后台性能的十大方法
34 2
|
7天前
|
JavaScript 前端开发 Java
通过JUnit5访问Java静态、私有、保护变量和方法
在《通过Gtest访问C++静态、私有、保护变量和方法》一文中介绍了如何通过Gtest访问C++静态、私有、保护变量和方法,本文介绍如何通过Junit5访问Java静态、私有、保护变量和方法。
13 0