Java方法详解

  • 何谓方法?

  • System,out.println(), 那么他是什么呢

    System 他是一个系统的类

    out 他是一个对象是System下的一个输出对象

println() 他就算是一个方法

.类() 都是Java里面的一些方法

俗称 类;对象;方法

System.out.peintln()

意思是调用系统类里面的标准输出对象out中的方法叫做println()方法。

示列

package method;public class Day01 {//main方法    //void  方法的返回值public static void main(String[] args) {//public static 修饰符 int sum = add(1,2);System.out.println(sum);}//加法public static int add(int a,int b) {return a+b;}//return  返回一个a+b}

void 是方法的返回值

int 也是方法的返回值

不过void 执行完后就结束了,int 会返回一个值

在下面写完后,在main方法里面调用是用不了的,

我们必须在里面加一个static就可以了,让它称为类变量

public static void test(){  //为了方便调用 ,加入static// void 空的意思  //tst名称随意的取for (int i = 1;i<=1000;i++) {if(i%5==0) {System.out.print(i+"\t");}if(i%(5*3)==0) {  //每行System.out.println();//System.out.print("\n");}}  }

我们随便复制一段代码,

输入public 由于这段代码输出的都是一堆数字,不想int那样a+b

我们加入一个void 就是返回一个空 void 是空的意思

然后随便输入一个方法名字 test

public void test(){//类,  对象   名称
}

将代码放进去

public static void tst(){  //为了方便调用 ,加入static// void 空的意思  //tst名称随意的取for (int i = 1;i<=1000;i++) {if(i%5==0) {System.out.print(i+"\t");}if(i%(5*3)==0) {  //每行System.out.println();//System.out.print("\n");}}   }

然后我们为了方便调用,加上static 就是那个类变量

如果不知道类变量是什么意思可以去我发布的文章 (变量,常量以及运算符) 去看看

调用方法:

直接输入test();就可以了

输出一下,就成功运行了

方法的定义

Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:

方法包含一个方法头和一个方法体。

  • 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

  • 返回值类型:方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。早这种情况下,一般使用void做返回值, void 是空的意思 没有

    • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。(可以随便取,但是要遵守驼峰命名)
  • 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序 和参数的歌声。参数是可选的,方法可以不包含任何参数。

  • //形式参数用来定义作用的

    • 形式参数:方法被调用时用于接收外界输入的数据。

    • //实际调用传递给他的参数

    • 实参:调用方法时实际传递给方法的数据。

  • 方法体:方法体包含具体的语句,定义该方法

  • 的功能。

    修饰符 返回值类型 方法名(参数类型  参数名){...方法体...return 返回值
    }
    

参数类型

public static void main(String[] args){} //实际上是   int sum = add(a:1,b:2)
/*实际参数是, 将  sum调用下面那个sum
将sum (a=1,b=2)传递给下面的(int a ,int b)
将1赋值给了a  将2赋值给了b实际参数:实际调用传递给他的参数*/int sum = add(1,2);System.out.println(sum);test();
}//加法//形式参数用来定义作用的public static int add(int a,int b) {return a+b;}

实际上是 int sum = add(a:1,b:2)
实际参数是, 将 sum调用下面那个sum
将sum (a=1,b=2)传递给下面的(int a ,int b)
将1赋值给了a 将2赋值给了b

实际参数:实际调用传递给他的参数

形式参数就是我定义这个方法,不过又没有被我用,所以我先给他一个占位符,怎么输入都可以,最后我们再用实际参数调用一下

return

如果方法存在返回值的话,一定要把返回值通过return这个关键词给返回出去,

如果是void那就不用了

return就是把值给返回去

示列

写一个比大小的代码

package method;public class Day02 {public static void main(String[] args) {int max = max (10,20);System.out.println(max);}//比大小             //形式参数public static int max(int num1,int num2) {int result = 1;if(num1==num2) {System.out.println("相等");return 0 ; //终止方法}if(num1>num2) {result = num1;}else {result = num2;}if (num2>num1) {result = num2;   }return result;     }
}

我们先写好形式参数

public static int max(int num1,int num2){}

在用if函数写一个

如果num1>num2就等于num1

if(num1>num2) {result = num1;
}else {result = num2;}
result是名称  可以乱填   但是记住要在外面定义一个int result

最后我们用return,把result给返回去

if(num1>num2) {result = num1;}else {result = num2;}if (num2>num1) {result = num2;   }return result;

然后你就会发现 result出错

因为变量result没有被 初始化

我们只需要给result初始化一下就可以了,随便输入一个数字汉字就可以了

int result = 1;

反正最后,还是会被下面的result给覆盖掉

return有两种意思

  • 第一种的返回值

  • 第二种是写在方法里面的,是用来终止方法的,程序在运行的时候,一旦碰到return在方法里面,那么这个方法就结束了

    在特殊情况下可以使用return来结束方法

然后再main方法里面输出

int max = max (10,20);System.out.println();

方法调用

  • 调用方法:对象名.方法名(实参列表)

  • Java支持两种调用方法的方式,根据方法是否返回值来选择。

  • 当方法返回一个值的时候,方法调用通常被当做一个值。例如:

    int larger = max(30,40);
    
  • 如果方法返回值是void,方法调用一定是一条语句。

    System.out.println("Hello,ZuiYou");
    

    代码可以用调用方式,直接拷贝到另一个程序里面也是可以用的

方法的重载 ★

  • 重载就是在一个类中,有相同的函数名称,但参数不同的函数。

    示列

    public static int max(int num1,int num2)
    

    这段代码的max参数只能是int

    我们把

    int a = max (10.0,10.0);
    

    double类型的, 就会发现出错

    加不了,无法比较大小了

    怎么让它们比呢?

    我们在定义一个方法

    double a = max (10,10);public static double max(double num1,double num2) {double result = 1;
    

这样就可以了

package method;public class Day02 {public static void main(String[] args) {int a = max (10, 20);System.out.println(a);}//比大小             //形式参数public static double max(double num1,double num2) {double result = 1;if(num1>num2) {result = num1;}else {result = num2;}return result;             }       public static int max(int num1,int num2) {int result = 0;if(num1==num2) {System.out.println("相等");return 0 ; //终止方法}           if(num1>num2) {result = num1;}else {result = num2;}if (num2>num1) {result = num2;  }return result;     }}

我们运行一下得出20.0

如果想继续运行一下 int 怎么办

double a =max (10,20);
改成
int a = max (10, 20);

将double 改成 int就可以了

运行一下

发现得出20

在吗在仔细看一下这段代码

就会发现名字max用的是同一个 , 但是意思表达的不同

这就是所谓的方法重载

简单来说就是一个类里面有两个相同名字的方法,但是参数不同 方法可以无限多的重名,但是要确保参数类型不能相同

方法的重载的规则

  • 方法名称必须相同,如果不想同那就不叫重载了
  • 参数列表必须不同个数不同、或类型不同、参数排列顺序不同等。
  • 方法的返回类型可以相同也可以不相同
public static int max(double num1,double num2) {int result = 1;if(num1>num2) {result = (int)num1;}else {result = (int)num2;}

把double改成int 也可以 , 然后再把num1 和num2 给强制转换成int就可以了

方法的返回类型相同,重载可以靠参数的类型来辨别

重载理论

  • 方法名相同时,编译器会根据调用方法的参数个数,参数类型等逐个去匹配,以选择对应的方法,如果匹配失败,则编译器报错

java 命令行传递参数

有时候你希望运行一个程序时候在传递给他消息。这要靠传递命令行参数给main()函数实现

语法

public class CommandLine{public static void main(String args[]){for(int i=0;i<args.length;i++){System.out.println("args["+i+"]:+args[i]);}}
}

我们先给这个方法定义一个方法体

package method;public class Day03 {public static void main(String[] args) {//args.length 数组长度for(int i =0;i<args.length;i++){}}
}

这句代码的意思是:他会不停的遍历每一个参数 如果有一个他就遍历一次,2个就遍历2次

然后输出一数组

package method;public class Day03 {public static void main(String[] args) {//args.length 数组长度for(int i =0;i<args.length;i++){System.out.println(args[i]);}}
}

加一些修饰符

package method;public class Day03 {public static void main(String[] args) {//args.length 数组长度for(int i =0;i<args.length;i++){System.out.println("args["+i+"]:"+args[i]);}}
}
 System.out.println("args["+i+"]:"+args[i]);//当前   第几个参数   的值

然后我们在进行编译

右键包 ,找到存放java文件的文件夹

在文件夹路径上方打开cmd命令提示符

然后输入javac Day03.java (Day03是我的类名)

回车

在看一下文件夹,发现生成了一个Day03.class

我们在输出cd…/退出到src文件夹

再次输入 method(我的包的名字) 和 Day03(我的类的名字)

我们按回车,发现什么也都没输出,是因为我们没有给他传递参数

现在我们给他传递一个参数

随便输出一个 this is zuiyou

这时候我们给他输入了3个字符串

按回车

就可以了

main方法也是可以传递参数的

命令行传递参数不需要掌握,知道就行

Java方法讲解、方法定义、参数类型、方法调用、方法重载和java命令行传递参数相关推荐

  1. Java方法01 方法(函数)定义、调用、值传递、重载、命令行传递参数

    Java 方法的定义.调用.值传递.重载.命令行传递参数 1. 什么是方法? 2. 方法的定义和调用 3. 值传递和引用传递 4. 方法的重载 5. 命令行传递参数 6. 可变参数(输入参数的数量不确 ...

  2. python命令行传递参数

    python命令行参数传递 本文介绍python的两种参数传递方式,第1种为sys的参数传递,第2种为argparse的参数传递 1. 使用sys的sys.argv来获取命令行参数 import sy ...

  3. php命令行传递参数,PHP命令行传递参数

    在以非命令行模式运行PHP的时候,我们可以通过$_GET.$_POST.$_REQUEST来接受get或是post参数,但是以命令行方式运行的话,怎么传递参数以接受参数呢?关于命令行的特点,可以直接看 ...

  4. tf.app.flags 定义命令行可选参数

      tensorflow 定义了tf.app.flags,它是用来支持接受命令行传递参数,相当于接受argv,其中tf.app.flags.DEFINE_xx()用来添加命令行的optional ar ...

  5. python命令行输入参数_Python命令行参数处理

    sys模块 sys模块代表了Python解释器,主要用于获取和Python解释器相关的信息,其中 sys.argv 可以获取命令行参数 在Python交互式解释器中可以先导入sys模块 import ...

  6. Python高阶——argparse(命令行与参数解析)

    文章目录 1.前言 2.创建脚本 3.导入解析模块 4.初始化.添加参数.解析参数 4.运行脚本 5.通过脚本实现计算功能 1.前言 本节,将讲解如何通过命令行传递参数.具体以代码形式讲解,保您一看就 ...

  7. 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~四 分部方法从另一方面定义了类型的操作规范...

    一 DBContext的构造方法,方法的重载 二 DBContext实例中,表实体对象是怎么被加入的 三 分部类是否破坏了单一职责 四 分部方法从另一方面定义了类型的操作规范 五 LINQ实体类中对属 ...

  8. 为什么基本类型可以调用方法——以字符串为例

    引用类型中的基本包装类型 对于str.substring(2)这种方法我们经常使用, var str = "hello world"; var s1 = str.substring ...

  9. 一个自建的Java命令行解析参数类ArgumentsParser

    文章目录 1 简介 2 参数格式定义 3 类功能介绍 3.1 初始化 3.2 主要函数 4 源代码 5 输出结果 6 小结 1 简介 在前文中,介绍了一个Python中的 argparse.Argum ...

  10. java 输入 方程,用java 编写一程序,求解一元二次方程:aX2+bX+c=0.参数a、b及c从命令行做参数输入 java...

    题目: 用java 编写一程序,求解一元二次方程:aX2+bX+c=0.参数a.b及c从命令行做参数输入 java 答案参考: 以下程序在jdk5.0测试通过 import java.util.Sca ...

最新文章

  1. (C++)将整型数组所有成员初始化为0的三种简单方法
  2. java类的完整生命周期详解
  3. abd shell关闭所有程序_在后台服务器上运行程序
  4. python cookie使用_Python使用cookielib模块操作cookie的实例教程
  5. ×××S 2012 交互式报表 -- 同步交互式排序
  6. Primes on Interval(CF-237C)
  7. 加了定位后div不显示了_FANUC主轴定位(M19)后诊断参数445不显示怎么办?
  8. mysql mha reference_MySQL MHA配置常见问题
  9. Keil5 C51版 下载与安装教程(51单片机编程软件)
  10. oracle11g64位精简版客户端,oracle11g 64位|oracle11g 64位客户端下载 附安装教程 - 121下载站...
  11. 修改HTML网站模板,SEO如何修改简单网页模板!
  12. 增长战略五大维度:单点突破、由内而外、锚点绑定、群体延伸、圈层建设
  13. 教程篇(7.0) 10. FortiGate安全 反病毒 ❀ Fortinet 网络安全专家 NSE 4
  14. axure rp8 添加动态面板_Axure8怎么使用动态面板?Axure8的使用教程
  15. 万象优鲜生鲜配送系统源码
  16. 浅析Kafka实时数据处理系统
  17. arduino 土壤温湿度传感器_Arduino上使用土壤湿度传感器
  18. python namedtuple默认值_python 使用 namedtuple
  19. 淘宝/天猫API,获得淘宝商品评论返回值说明(数据解析)
  20. 手机号正则表达式校验,兼容+86,空格和-分隔符等常规手机格式

热门文章

  1. 【2009-10-19】今天天气不错
  2. QoS服务质量七交换机拥塞管理
  3. 职场小白,一路走来的心路历程
  4. VIVADO 2014.4 如何编写mealy状态机并测试
  5. P3143 [USACO16OPEN]Diamond Collector S
  6. 【开题报告】ssm动漫周边e商城rfg27计算机毕业设计程序
  7. 欧姆龙 CJ1W-SCU yN+x功能
  8. Java 线程和进程创建with多线程安全多线程同步线程锁机制(ThreadsANDProcesses_create_security_synchronous_lock.class)...
  9. 简单使用Google Agera框架
  10. Python爬虫可以赚钱吗