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 )
  • 表明可以接收多个参数值,多个参数值被当作数组传入。
  • 传入参数形式可以是多个参数以‘,’相隔,也可以传入数组。
  • 只能处于参数列表之后,所以一个方法中最多只能有一个长度可变的形参。

参考书籍:《疯狂Java》讲义、《Java核心技术卷I》

接下一篇:Java方法之值传递机制

Java方法之定义形式及可变参数的更多相关文章

  1. Java方法的定义以及调用、方法重载、可变参数以及递归

    目录 何谓方法 方法的定义及调用 方法的定义 方法调用 方法重载 命令行传参 可变参数 递归 何谓方法 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于 ...

  2. Java(31)泛型和可变参数

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228443.html 博客主页:https://www.cnblogs.com/testero ...

  3. Java基础系列(31)- 可变参数

    可变参数 JDK1.5开始,Java支持传递同类型的可变参数给一个方法 在方法声明中,在指定参数类型后加一个省略号(...) 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数.任何普通的参数 ...

  4. java学习第16天(补充可变参数)

    如果我们在写方法的时候,参数个数不明确,就应该定义可变参数. 格式: 修饰符 返回值类型 方法名(数据类型... 变量) {} 注意: A:该变量其实是一个数组名 B:如果一个方法有多个参数,并且有可 ...

  5. 编程语言基础:用“收集器”理解各种语言(C++、Java、Python)中的可变参数!

    [C++通常用一种特殊的List收集可变形参,而Java通常用一个数组,Python收集为tuple.dict.] 1.Java中的可变参数的函数:void f(ClassName... object ...

  6. java方法的定义格式

    Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式为: [修饰符1  修饰符2  …..] 返回值类型  方法名( 形式参数列表 ){ Java 语句;… … … } 例如 ...

  7. JAVA 1.5 局部特性(可变参数/ANNOTATION/并发操作)

    1: 可变参数 可变参数意味着可以对某类型参数进行概括,例如十个INT可以总结为一个INT数组,当然在固定长度情况下用数组是很正常的 这也意味着重点是可变,不定长度的参数 PS1:对于继承和重写我没有 ...

  8. 22.java方法的定义

    java中的方法:就相当于c语言中的函数:sun在开发java的时候,为提高其代码的重复利用率,引入了方法. 什么是方法? 方法就是一段代码片段,这个片段可以完成特定的功能,并且可以重复利用. 从入口 ...

  9. Java | 方法的定义 & 重载 & 递归

    方法 方法就是一段用来完成特定功能的代码片段.   方法用于定义该类或该类的实例的行为特征和功能实现.方法是类和对象行为特征的抽象.在面向对象中,整个程序的基本单位是类,方法是从属于类和对象的. 方法 ...

随机推荐

  1. markdown语法(转)

    markdown语法 1.标题代码 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 2.引用代码 >你好 >> 您好 ...

  2. ORM之单表操作

    ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...

  3. python 线程、进程与协程

    一.什么是线程?什么是进程? 第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region).数据区域(data region)和堆栈(stack regio ...

  4. WinDbg命令系统

    WinDbg命令系统 WinDbug三种命令 WinDbug是一个强大的调试器,大部分很多功能都是通过命令来实现的,命令在命令窗口中输入,主要分为以下三类: 标准命令 标准命令提供了调试器的基本功能, ...

  5. 你还在用BeanUtils进行对象属性拷贝?

    在做业务的时候,为了隔离变化,我们会将DAO查询出来的DO和对前端提供的DTO隔离开来.大概90%的时候,它们的结构都是类似的:但是我们很不喜欢写很多冗长的b.setF1(a.getF1())这样的代 ...

  6. 第七章 文件与I/O(4)

    文件共享 打开文件内核数据结构 一个进程两次打开同一个文件 一个进程能打开1024个文件描述符,没打开一个文件,内核会生成一个文件表,文件表中的v节点指针指向v节点表,v节点部分信息就是stat函数返 ...

  7. 前端技术之:JS开发几个有意思的东东

    一. 查看性能分析报告 npm run build:prod --report ​ 二.vue ui工具 ​ ​ 三.vue-element-admin https://panjiachen.gite ...

  8. 爬虫之selenium爬取京东商品信息

    import json import time from selenium import webdriver """ 发送请求 1.1生成driver对象 2.1窗口最大 ...

  9. jq实现监听滚动条导致导航栏变色

    1效果图 2 html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  10. 使用Typescript重构axios(二十五)——文件上传下载进度监控

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...