Java定义形式及可变参数实例解析

 更新时间:2019年12月16日 10:00:30   作者:sumerday  
这篇文章主要介绍了Java定义形式及可变参数实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了Java定义形式及可变参数实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Java中的方法类似于面向过程程序设计中的函数,但与其不同的是,Java中的方法不能独立存在,它属于类或对象。既然方法属于类或对象,那么,方法的调用者就必须是类或对象。(当然,之后将会提到的同一个类中方法互相调用,实际上也是类或对象在作为调用者)

还是先上一段代码:

package com.my.pac05;

/**
 * @author Summerday
 * @date 2019/12/1 15:30
 */
public class MethodTest {
  public static void main(String[] args) {
    //通过类直接调用static修饰的first()方法
    MethodTest.first();
    //MethodTest.second();错误
    //方法由static修饰,可以通过类直接调用static修饰的方法
    //创建实例对象,访问没有static修饰的普通方法
    MethodTest method = new MethodTest();
    method.second();
    //接收secondVal方法的返回值
    int secondValue = method.secondVal();
    System.out.println(secondValue);//10
    
    method.third(2);
    //接收thirdVal方法的返回值
    int thirdValue = method.thirdVal(20);
    System.out.println(thirdValue);//20
    
    method.fourth('a', 'b');
    method.fifth("hello","what's","your","name");
    System.out.println();
    method.sixth(new String[]{"hello","what's","your","name"});
  }

  //static修饰的静态方法
  public static void first(){
    System.out.println("static: no param...");
  }
  //无参数(无参无返)
  public void second() {
    System.out.println("no param..");
  }
  //无参有返
  public int secondVal(){
    return 10;
  }
  //一个参数(有参无返)
  public void third(int param1) {
    System.out.println("one param.. value is " + param1);
  }
  //有参有返
  public int thirdVal(int param1){
    return param1;
  }
  //两个参数
  public void fourth(char param1, char param2) {
    System.out.println("two params.. param1 is "
        + param1 + ",param2 is " + param2);
  }
  //多个参数1
  public void fifth(String...params){
    System.out.println("*type...param*");
    for(String param:params){
      System.out.print(param+" ");
    }
  }
  //错误:public void fifth1(String...params,int a )
  //多个参数2
  public void sixth(String[] params){
    System.out.println("*type[] param*");
    for(String param:params){
      System.out.print(param+" ");
    }
  }
}

方法调用

使用static修饰的方法

//通过类直接调用static修饰的fourth()方法
  MethodTest.first();
//也可以通过创建的对象调用static修饰的方法
  method.first();
//static修饰的静态方法
  public static void first(){
    System.out.println("static: no param...");
}
  • 属于这个类本身。
  • 类和对象都可以调用。
  • 类和对象调用的结果相同。

没有static修饰的方法

//MethodTest.second();错误
//创建实例对象,访问没有static修饰的普通方法
  MethodTest method = new MethodTest();
  method.second();
//无static修饰的普通方法
  public void second() {
    System.out.println("no param..");
  }
  • 属于类的对象,不属于类本身。
  • 只能由对象作为调用者。
  • 使用不同对象调用同一个方法,结果可能不同。

方法的定义格式

无参无返

//无参无返
  public void second() {
    System.out.println("no param..");
  }

无参有返

 //无参有返
  public int secondVal(){
    return 10;
  }

有参无返

//有参无返
  public void third(int param1) {
    System.out.println("one param.. value is " + param1);
  }

有参有返

 //有参有返
  public int thirdVal(int param1){
    return param1;
  }

形参个数可变的方法

采用数组形参来定义

把数组作为形参加入形参列表中。类似于我们用的最多的public static void main(String[] args)相当于main方法接收一个String类型的数组,也就是命令行参数,关于命令行参数,就暂时不提啦。

//多个参数2
  public void sixth(String[] params){
    System.out.println("*type[] param*");
    for(String param:params){
      System.out.print(param+" ");
    }
  }

只能接收数组。

可以出现在形参列表的任意位置。

采用JDK1.5新特性来定义

JDK1.5之后,可以在最后一个参数类型和参数名之间加上...

 //多个参数1
  public void fifth(String...params){
    System.out.println("*type...param*");
    for(String param:params){
      System.out.print(param+" ");
    }
  }
  //需要在最后一个参数类型和参数名之间!!!
  //错误:public void fifth1(String...params,int a )
  • 表明可以接收多个参数值,多个参数值被当作数组传入。
  • 传入参数形式可以是多个参数以‘,'相隔,也可以传入数组。
  • 只能处于参数列表之后,所以一个方法中最多只能有一个长度可变的形参。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • k8s解决java服务下载超时问题小结

    k8s解决java服务下载超时问题小结

    我们在走ingress的java程序的时候,往往会有导出数据的功能,这个时候就会有因网络慢、后台处理时间过长导致下载超时,也有因下载文件太大,导致下载失败,下面给分享k8s解决java服务下载超时问题,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • mybatis createcriteria和or的区别说明

    mybatis createcriteria和or的区别说明

    这篇文章主要介绍了mybatis createcriteria和or的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringBoot使用Redisson实现延迟执行的完整示例

    SpringBoot使用Redisson实现延迟执行的完整示例

    这篇文章主要介绍了SpringBoot使用Redisson实现延迟执行的完整示例,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-06-06
  • IDEA全局查找关键字的用法解读

    IDEA全局查找关键字的用法解读

    这篇文章主要介绍了IDEA全局查找关键字的用法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Spring IOC装配Bean过程解析

    Spring IOC装配Bean过程解析

    这篇文章主要介绍了Spring IOC装配Bean过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Spring中的Bean对象初始化详解

    Spring中的Bean对象初始化详解

    这篇文章主要介绍了Spring中的Bean对象初始化详解,我们也可以根据Java语言的特性猜测到其很有可能是通过反射机制来完成Bean的初始化操作,接下来我们一步一步的剖析Spring对Bean的初始化操作,需要的朋友可以参考下
    2023-12-12
  • SpringBoot全局配置long转String丢失精度问题解决方案

    SpringBoot全局配置long转String丢失精度问题解决方案

    这篇文章主要介绍了SpringBoot全局配置long转String丢失精度问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Java中的异常Exception与处理方式详解

    Java中的异常Exception与处理方式详解

    这篇文章主要介绍了Java中的异常Exception与处理方式详解, Java语言中,将程序执行中发生的不正常情况称为"异常"(开发过程中的语法错误和逻辑错误不是异常),需要的朋友可以参考下
    2024-01-01
  • Java编程实现对十六进制字符串异或运算代码示例

    Java编程实现对十六进制字符串异或运算代码示例

    这篇文章主要介绍了Java编程实现对十六进制字符串异或运算代码示例,简述了异或运算以及具体实例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • JAVA多线程编程实例详解

    JAVA多线程编程实例详解

    这篇文章主要介绍了JAVA多线程编程,结合实例形式总结分析了多线程、锁、线程池等相关原理及使用技巧,需要的朋友可以参考下
    2019-09-09

最新评论