0


(JavaSE)第四章--方法的使用——上

文章目录

一、体验一下方法

这里我们先来体验一下方法,先不了解其怎么使用。

1. 不使用方法

publicclassTest1{publicstaticvoidmain(String[] args){int a =10;int b =20;int c =30;int d =40;int sum1 = a + b;int sum2 = b + c;int sum3 = c + d;
        System.out.println(sum1);
        System.out.println(sum2);
        System.out.println(sum3);}}

结果为:
在这里插入图片描述

在我们没有学习方法时,当重复实现一个加法(功能),总是要把其解题方法重新写一遍,这样麻烦了。

2. 使用方法

publicclassTest2{publicstaticintadd(int a,int b){return a + b;}publicstaticvoidmain(String[] args){int a =10;int b =20;int c =30;int d =40;int sum1 =add(a, b);int sum2 =add(b, c);int sum3 =add(c, d);
        System.out.println(sum1);
        System.out.println(sum2);
        System.out.println(sum3);}}

我们可以看到其结果和不使用方法时一样:
在这里插入图片描述

那有人就会说,哎呀这使用方法明明比不使用的时候更加麻烦呀,这么认为是错误的,我们这里实现加法时,比较容易写,代码量少,当到后面时,一个解题方法会有十几二十行甚至更多,这时候不使用方法会显得很麻烦和凌乱。同时使用方法时可增加代码的可读性,是代码更加简洁。

二、方法的定义及调用

1. 方法的定义

可以认为方法是一段可以重复利用的代码片段,是可以解决某一问题的。

注:方法必须定义在类体内,可以放在类体前,也可以放在类体最后或其他位置,不像 C 放在后面的话需要在开头声明,因为当执行到调用语句时,它就会在相应类体内寻找该方法。

[修饰符列表] 返回值类型 方法名(形式参数列表) {
方法体;
}

注:
方法体由 Java 语句构成。
方法定义之后需要调用,不调用则不会执行。

  1. 修饰符列表: 目前统一写成 public static ,后面再去了解。
  2. 返回值类型: 返回值类型可以为 Java 中所有合法的数据类型,Java 中的数据类型包括基本数据类型和引用数据类型,所以可以使用的类型有: byte、short char、int、long、double、float、boolean、String…等等。
  3. 有返回值: 当有返回值时,就必须使用 "return 值";返回一个于返回值类型相对应的类型,否则会报错,如:返回值类型为 int , 我们就必须返回一个 int 类型,return 10; (int类型)
  4. 无返回值: 当不返回值时,不能空在哪里,需要使用关键字 void 表示无返回值, 如果返回值类型是void,那么在方法体当中不能有“return 值;” 这样的语句。但是可以有“return;”语句。这个语句“return;”的作用就是用来终止当前方法的
  5. 除了 void 外 剩下的都需要使用 "return 值"; 语句返回一个与返回值类型相对应的值。
  6. 方法名: 方法名应遵守驼峰式命名,见名知意,开头首单词字母小写,后面单词首字母大写。
  7. 形式参数列表: 形式参数列表中的每一个参数都是“局部变量”,方法结束之后内存释放。 形参可以是 0~n 个,主要看实参传什么类型就用什么类型接收。 使用:public static int add(int a, String str) {},形参之间用逗号隔开。

2. 方法的调用

调用方法:方法名(实数参数列表);

注意:

  1. 实参的类型和形参的类型必须一一对应(注意自动转化类型),同时个数也必须相同,可以是0~n个。并且实参是有数据的。例:
publicclassTest3{publicstaticvoidtest(int a, String b){
        System.out.println(str);}publicstaticvoidmain(String[] args){int len =10;
        String str ="abc";test(len, str);}}

在这里插入图片描述我们来看看这段代码能不能执行:

publicclassTest2{publicstaticintadd(int x,int y){return x + y;}publicstaticvoidmain(String[] args){byte a =10;byte b =20;int ret =add(a, b);
        System.out.println(ret);}}

在这里插入图片描述这段代码并没有报错,因为 byte 会自动转化为 int 类型

  1. 当有返回值时,可以用对应的类型进行接收返回值,如:“return 10;” 则可以用 “int ret = 方法名(实数参数类型);” 这样的语句进行接收。
publicclassTest3{publicstaticintadd(int a,int b){return a + b;}publicstaticvoidmain(String[] args){int c =10;int d =20;int ret =add(c, d);//用ret接收add的返回值即a+b的值
        System.out.println(ret);}}
  1. 如果有返回值,无论返回值是什么类型,其返回值只有一个。

  2. 在 Java 中,实参和形参是在两块不同的局部变量,即相当于我们的赋值,如"int a = 10; int b = a;" 即将 a 的值复制一份给 b 并不会改变 a 的值。即实参只是复制一份数据给形参,这种叫做传值调用。

例:

publicclassTest3{publicstaticvoidswap(int x,int y){int tmp = x;
        x = y;
        y = tmp;
        System.out.println("x="+ x +" "+"y="+ y);}publicstaticvoidmain(String[] args){int a =10;int b =20;swap(a, b);
        System.out.println("a="+a +" "+"b="+ b);}}

其运行结果为:
在这里插入图片描述交换 x、y的值并不会改变 a、b的值。

  1. 因为实参和形参在不同的方法内,所以其局部变量的名字可以相同。
publicclassTest4{publicstaticintadd(int a,int b){return a + b;}publicstaticvoidmain(String[] args){int a =5;int b =10;int ret =add(a, b);
        System.out.println(ret);}}

其结果为:
在这里插入图片描述我们可以看到并没有报错。

  1. 当调用方法时,此方法不在调用的类中,而在另一个类中,需要这样调用:类名.方法名(实参);
publicclassTest4{publicstaticvoidmain(String[] args){int a =5;int b =10;int ret = One.add(a, b);
        System.out.println(ret);}}classOne{publicstaticintadd(int a,int b){return a + b;}}

其结果为:
在这里插入图片描述

三、练习

学完方法我们则写一些练习加深对方法的理解。

1. 写一个判断是否为素数的方法。

素数一般指质数,质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

publicclassTest5{publicstaticbooleanisPrimeNumber(int n){for(int i =2; i <= Math.sqrt(n); i++){if(n % i ==0){//不是素数返回falsereturnfalse;}}returntrue;//是素数返回true}publicstaticvoidmain(String[] args){for(int i =2; i <=100; i++){if(isPrimeNumber(i)){//是素数则打印
                System.out.print(i +" ");}}}}

Math.sqrt() 是求根号的意思。假如一个数N是合数,它有一个约数a,a×b=N 如果 a < b ,则 b 大于或等于根号N,a 小于或等于根号N。如果取a ==2开始用 n % a != 0,一直到 a 小于等于 n 的根号即说明 n 是素数。

其结果为:
在这里插入图片描述

2. 写一个方法打印乘法表,可以为9 * 9也可以为10*10…

import java.util.Scanner;publicclassTest6{publicstaticvoidmulTable(int n){for(int i =1; i <= n; i++){//行for(int j =1; j <= i; j++){//列
                System.out.print(j +"*"+ i +"="+ j*i +" ");}
            System.out.println();}}publicstaticvoidmain(String[] args){
        Scanner num =newScanner(System.in);int n = num.nextInt();mulTable(n);}}

当 n == 9 时其结果为:
在这里插入图片描述当 n == 10 时其结果为:
在这里插入图片描述

3. 写一个方法判断是不是闰年

publicclassTest7{publicstaticbooleanisLeapYear(int n){if((n %4==0&& n %100!=0)|| n %400==0){returntrue;}returnfalse;}publicstaticvoidmain(String[] args){for(int i =1000; i <=2000; i++){if(isLeapYear(i)){
                System.out.print(i +" ");}}}}

其结果为:
在这里插入图片描述当然后面还有这里显示不完。

好了,本章节方法的使用讲完了,因博主能力有限,如有发现不足和错误,请提出,谢谢各位大佬。

标签: java 后端

本文转载自: https://blog.csdn.net/Autonmy_/article/details/123589989
版权归原作者 没完没了的麦当 所有, 如有侵权,请联系我们删除。

“(JavaSE)第四章--方法的使用&mdash;&mdash;上”的评论:

还没有评论