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 )
- 表明可以接收多个参数值,多个参数值被当作数组传入。
- 传入参数形式可以是多个参数以‘,’相隔,也可以传入数组。
- 只能处于参数列表之后,所以一个方法中最多只能有一个长度可变的形参。
参考书籍:《疯狂Java》讲义、《Java核心技术卷I》
接下一篇:Java方法之值传递机制
Java方法之定义形式及可变参数的更多相关文章
- Java方法的定义以及调用、方法重载、可变参数以及递归
目录 何谓方法 方法的定义及调用 方法的定义 方法调用 方法重载 命令行传参 可变参数 递归 何谓方法 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于 ...
- Java(31)泛型和可变参数
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228443.html 博客主页:https://www.cnblogs.com/testero ...
- Java基础系列(31)- 可变参数
可变参数 JDK1.5开始,Java支持传递同类型的可变参数给一个方法 在方法声明中,在指定参数类型后加一个省略号(...) 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数.任何普通的参数 ...
- java学习第16天(补充可变参数)
如果我们在写方法的时候,参数个数不明确,就应该定义可变参数. 格式: 修饰符 返回值类型 方法名(数据类型... 变量) {} 注意: A:该变量其实是一个数组名 B:如果一个方法有多个参数,并且有可 ...
- 编程语言基础:用“收集器”理解各种语言(C++、Java、Python)中的可变参数!
[C++通常用一种特殊的List收集可变形参,而Java通常用一个数组,Python收集为tuple.dict.] 1.Java中的可变参数的函数:void f(ClassName... object ...
- java方法的定义格式
Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式为: [修饰符1 修饰符2 …..] 返回值类型 方法名( 形式参数列表 ){ Java 语句;… … … } 例如 ...
- JAVA 1.5 局部特性(可变参数/ANNOTATION/并发操作)
1: 可变参数 可变参数意味着可以对某类型参数进行概括,例如十个INT可以总结为一个INT数组,当然在固定长度情况下用数组是很正常的 这也意味着重点是可变,不定长度的参数 PS1:对于继承和重写我没有 ...
- 22.java方法的定义
java中的方法:就相当于c语言中的函数:sun在开发java的时候,为提高其代码的重复利用率,引入了方法. 什么是方法? 方法就是一段代码片段,这个片段可以完成特定的功能,并且可以重复利用. 从入口 ...
- Java | 方法的定义 & 重载 & 递归
方法 方法就是一段用来完成特定功能的代码片段. 方法用于定义该类或该类的实例的行为特征和功能实现.方法是类和对象行为特征的抽象.在面向对象中,整个程序的基本单位是类,方法是从属于类和对象的. 方法 ...
随机推荐
- UIAlert
转自:https://blog.csdn.net/deng0zhaotai/article/details/53887508 通过uialertcontroller实现三种简易弹框 (一)警告类 - ...
- SpringCloud之Hystrix断路器(六)
整合Hystrix order-service pom.xml <dependency> <groupId>org.springframework.cloud& ...
- Alpha阶段--第六周Scrum Meeting
任务内容 本次会议为第六周的Scrum Meeting会议 召开时间为周四上午10点,在信南B317召开,召开时间约为30分钟,进行的项目规划和分工 队员 任务 张孟宇 进行用户登录界面的代码编写 吴 ...
- VBoxManage.exe: error: Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, CL SID_VirtualBox w/ IUnknown works.
我先把vagrantbox卸载了 重新装了一个 然后提示这个错误 当时我一脸蒙逼 后来经过百度 1, win+r 快捷键打开 “运行”,输入regedit 打开注册表 2,找到 HKEY_CLASSE ...
- AQS 入门
一 AQS简介 路径:java.util.concurrent.locks.AbstractOwnableSynchronizer. 定义:AQS提供了一种 通过维护一个volatile修饰 int类 ...
- C++学习笔记3_类.和相关函数
1. 类*在C++中,struct和class没有明显差别,不同C#,class一定要new(手动开辟内存)出来struct Hero{ char name[64]; int sex;}void pr ...
- tarjan学习(复习)笔记(持续更新)(各类找环模板)
题目背景 缩点+DP 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只 ...
- [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq实际执行的SQL
此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper支持.net framework4.6.1及 ...
- centos6的JDK安装
1. 通过如下命令查看当前操作系统是否存在JDK rpm -qa | grep java 如果出现以下内容说明你的操作系统存在jdk 2.那么依次通过如下命令进行删除它 rpm -e - -nodep ...
- 【集合系列】- 初探java集合框架图
一.集合类简介 Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)"丢进"该容器中.从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数 ...