Java方法 用法的解析

方法

  1. 什么是方法?有什么用?

    方法(英语单词:method)是可以完成,某个特定功能的并且可以被重复利用的代码片段

    在c语言中,方法被称为“函数”。在Java中不叫函数,叫做方法。

    你定义了一个/抽取了一个方法出来,而这个方法却无法完成某个功能,

    那么你抽取的这个方法毫无意义。一般一个方法就是一个“功能单元”。

    假设在以后的开发中,某个功能是可以独立抽取出来的,建议定义为方法,

    这样以后只要需要这个功能,那么直接调用这个方法即可,而不需要重复编写

    业务逻辑代码。

  2. 方法怎么定义?语法机制是什么?

[修饰符列表] 返回值类型 方法名(形式参数列表){
	方法体;
}
注意:[ ] 符号叫做中括号,以上中括号[ ]里面的内容表示不是必须的,是可选的。
方法体由Java语句构成。
方法定义之后需要去调用,不调用是不会执行的。
public class Demo{
    //main方法结束之后不需要给JVM返回任何执行结果。
    public static void main(String[] args){
        
    }
}
关于修饰符列表:

​ 修饰符列表不是必选项,是可选的。目前为止,大家统一写成:public static

​ 后面你就理解应该怎么写了。

关于返回值类型:

​ 第一:返回值类型可以是任何类型,只要是Java中合法的数据类型就行,数据类型包括基本数据类型和引用数据类型,也就是说返回值类型可以是:byte short int long float double boolean char String…

​ 第二:什么是返回值?返回值一般指的是一个方法执行结束之后的结果。通常是一个数据,所以被称为“值”,而且还叫“返回值”。 方法就是为了完成某个特定的功能,方法结束之后大部分情况下都是有一个结果,而体现结果的一般都是数据。数据得有类型。这就是返回值类型。

​ 第三:当一个空白方法执行结束不返回任何值的时候,返回值类型也不能空白,必须写上void关键字,所以void表示该方法执行结束后不返回任何结果。方法执行结束之后的返回值实际上是给调用者了,谁调用就返回给谁。

​ 第四:如果返回值类型“不是void”,那么你在方法体执行结束的时候必须使用“return 值;”这样的语句来完成“值”的返回,如果没有“return 值;”这样的语句那么编译器会报错。return 值; 这样的语句作用是什么?作用是“返回值”,返回方法的执行结果。

​ 第五:只要有“return”关键字的语句执行,当前方法必然结束。return只要执行,当前所在的方法结束,记住:不是整个程序结束。

​ 第六:如果返回值类型是void,那么在方法体当中不能有“return 值;”这样的语句。但是可以有“return;”语句。这个语句“return;”的作用就是用来终止当前方法的。

​ 第七:除了void之外,剩下的都必须有“return值;”这样的语句。

方法名

方法名要见明知意。(驼峰命名方式)

方法名在标识符命名规范当中,要求首字母小写,后面每个单词首字母大写。

只要是合法的标识符就行。

形式参数列表

简称:形参

注意:形式参数列表中的每一个参数都是“局部变量”,方法结束之后内存释放。

形参的个数是:0~N个。

public static void sumInt(){}
public static void sumInt(int x){}
public static void sumInt(int x, int y){}
public static void sum(int a, int b, double d, String s){}

形参有多个的话使用“逗号,”隔开。逗号是英文的。

形参的数据类型起决定性作用,形参对应的变量名是随意的。

方法体

由Java语句构成。Java语句以“;”结尾。

方法体当中编写的是业务逻辑代码,完成某个特定功能。

在方法体中的代码遵循自上而下的顺序依次逐行执行。

在方法体中处理业务逻辑代码的时候需要数据,数据来源就是这些形参。

方法定义之后怎么调用?

方法必须调用才能执行

怎么调用,语法是什么?

​ 类名.方法名(实际参数列表);

注意:实参和形参必须一一对应,类型要对应,个数要对应
public class Demo{
    //方法定义在这里可以
    
    
    //main方法结束之后不需要给JVM返回任何执行结果
    public static void main(String[] args){
        //(10 , 2)叫做实际参数列表,简称实参
        //注意:实参和形参必须一一对应,类型要对应,个数要对应
        int jieGuo = Demo.divide(10 , 2);
    }
    //方法定义到这里也可以。没有顺序要求。
    //业务是什么?计算两个int类型数据的商
    //方法执行结束之后返回执行结果
    
    //编译报错:缺少返回语句
   // public static int divide(int x, int y ){
   //   int z = x / y;
   // }

	public static int divide(int x,int y){
        int z = x / y;
        return z;
    }
    
}

调用divide方法

怎么去接收这个方法的返回结果???

使用变量来接收这个方法的返回值。

注意:变量的定义需要指定变量的数据类型。

变量的数据类型是什么呢?

可以用大容量的数据类型接收

对于没有返回值的方法,变量能接收吗?

divide方法结束没有返回值,不能接收

错误:不兼容的类型:void无法转换为int

当一个方法有返回值的时候,我可以选择不接收吗?

你可以返回值,但是我可以选择不要你这个值。这是允许的。

只不过这样没有意义,一般程序返回了执行结果,都是需要接收这个结果的。

我们可以接收,但是这个返回值该返回还是会返回的,只不过不用变量接收

以下代码虽然没有使用变量接收这个返回值,但是这个值还是返回了

返回之后内存马上释放,因为没有使用变量接收。

调用方法(在方法调用的时候,什么时候“类名.”可以省略)

不是跨类调用(a方法调用b方法,a和b方法都在同一个类中):"类名."可以省略

跨类调用:"类名."不可以省略

MyClass.daYin();

调用程序不一定写到main方法中,不要把main方法特殊化

main方法也是一个普通方法

别自乱阵脚:任何一个方法体当中的代码都是遵循自上而下的顺序依次执行的。

public class Demo11{
	public static void main (String[] args){
		//调用m1方法
        m1();
	}
	public static void m1(){
		//调用程序不一定写道main方法中,不要把main方法特殊化
        //main方法也是一个普通方法。
        m2();
	}
	public static void m2(){
		System.out.println("Hello World!");
	}
}

调用哪个方法就会跳到哪个方法当中

main方法最先执行,并且main方法最后一个结束。

main方法结束,整个程序就结束了。

break;和return;语句有什么区别?

public class Demo{
    
    
    public static void main(String[] args){
        for(int i = 0;i<10;i++){
            if(i == 5){
                //break; //终止for循环
                return; //终止当前方法
            }
            System.out.println("i="+i);
        }
        System.out.println("Hello world!")
        
        
    }
    public static void m(){
        
    }
}

对于一个Java程序来说,如果没有“方法”,会存在什么问题?

​ 代码无法得到复用。(怎么提高复用性,可以定义方法,然后需要使用该功能的时候,直接调用

​ 一下方法即可。这样代码就得到复用了。)

public class Demo{
    public static void main(String[] args){
        int x = 100;
        int y = 200;
        int z = x + y;
        System.out.println(x+"+"+y+"="+z);
    }
    
    //没有编写其他方法
}

需求2:请编写程序,计算666和888的求和。

​ 这个需求2实际上和需求1是完全相同的,只不过具体求和时的“数据不同”

int a = 666;
int b = 888;
int c = a + b;
System.out.println(a + "+" + b + "=" + c);

需求3:请编写程序,计算111和222的和

int m = 111;int n = 222;int k = m + n;System.out.println(m + "+" + n + "=" + k);

需求1和需求2本质上相同,只不过参与运算的数值不同,

代码编写两份,显然代码没有得到重复利用,专业术语叫做“复用性”差

功能/业务逻辑既然相同,为什么要重复编写代码,代码能不能写一次,以后

要是需要再次使用该“业务/需求”的时候,直接调用就可以了。

如果想达到代码复用,那么需要学习Java语言中的方法机制。

这个必须记住了

main方法不需要程序员手动调用,是由JVAM调用的。

但是除了main方法之外其他的方法,都需要程序员

手动调用,方法只有调用的时候才会执行,方法不调用是不会执行的。

 public class Demo9{     //主方法,入口 	public static void main(String[] args){ 		sumInt(100, 200); 		sumInt(666, 888); 		sumInt(111, 222); 	} 	 	public static void sumInt(int x, int y){ 		int z = x + y; 		System.out.println(x + "+" + y + "=" + z ); 	} } 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值