JavaSE基础-方法

一、方法的概述

什么是方法?

定义:方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复使用。

完整格式:

修饰符 返回值类型 方法名 (形参表){

方法体代码(需要执行的代码功能);

return 返回值;

}

比如:

public static double sum(double a,double b){  //返回值类型为int型
    double c=a+b;
    return sum;
}

为什么要使用方法?

使用方法可以提高代码的复用性,提高开发效率,让程序的逻辑更清楚。

用人话讲就是:张三可以用这个代码,李四也可以使用这个代码做一些功能。

方法应该怎样使用?

方法只有在被调用时才能使用。

调用格式为:方法名(……);

情景需求:

新手小白需要计算两个数据的相加运算,而新手小绿也需要计算两个数据的相加运算,于是小白为了提高代码的复用性,能多次使用。运用”方法”写了如下代码:

//首先定义方法:两个数据进行相加。注意定义的方法不在main主函数中
public static double sum(double a,double b){ 
    double c=a+b;  //相加
    return sum;   //返回对应类型
}
//接下来调用方法
double rs = sum(50,80);  // 计算50+90的值
System.out.println(rs);//输出

方法定义时需注意:

  1. 方法的修饰符:暂时都使用public static修饰

  1. 方法申明了具体的返回值类型,内部必须使用return返回对应类型的数据。

  1. 形参列表可以有多个,甚至没有;如果有多个行参,多个形参必须使用“,”隔开,且不能初始化。

二、方法的其他定义形式

在设计方法时应该按照需求设计方法。

有时不需要返回值,又是不需要参数,所以可以分为:

无参数,无返回值的方法
无参数,有返回值的方法
有参数,有返回值的方法
  1. 无参数,无返回值的方法:

public static void helloworld( ){ 
    System.out.println("Hello World");
}
//定义一个输出一次Hell World的方法
  1. 无参数,有返回值的方法:

public static void helloworld( int n){ 
    for(i=1;i<n;i++){
        System.out.println("Hello World");
    }
}
//定义一个输出一次n次Hell World的方法
  1. 有参数,有返回值的方法

也就是我们刚开始学习的方法。

三、方法使用时的常见问题

  1. 方法可以放在前面也可以放在后面,但是一个方法不能定义在另一个方法中,所以不能在main中i当以方法。

  1. 方法的返回值类型写void时,方法内不能使用return返回数据。如果方法的返回值类型写了具体类型,方法内需要使用return返回相对应的类型。

  1. return语句的下面不能写代码,因为执行不到这里。

  1. 方法不调用就不会执行,调用方法时,传给方法的数据,必须是匹配方法的参数情况。

  1. 调用有返回值的方法,有3种方式:

  • 可以定义变量接受结果

  • 或者直接输出调用

  • 甚至直接调用

  1. 调用无返回值的方法:只有1种方式:只能直接调用。

四、设计方法的技巧

我们在设计方法时,主要关注三个方面:

  • 方法是否需要接受数据进行处理?

若不需要接受数据,就是无参数
  • 方法是否需要返回数据?

若不需要返回数据,定义方法的返回值类型就是void,并且不能使用return返回数据。
  • 方法要处理的业务能力(编程能力)

在方法体代码中实现应该完成的需求

五、方法在计算机中执行的原理

方法被调用时,进入到栈内存运行的。

栈的特点:先进后出,后出先进。

图片截取自黑马程序员

六、Java的参数传递机制

Java的参数传递机制都是:值传递。

值传递:指的是在传输实参给方法的行参时,传输的是实参变量中存储的值的副本。

实参:在方法内部定义的变量。

形参:定义方法时“……”中所声明的参数。

public static void number(int a){
    System.out.println( a );//输出形参a
    a = 20; 
}

int a = 10;
number(a);
System.out.println( a );//这里输出的会是多少?

因为java的参数传递机制是值传递,所以上面输出a的值是10。

在调用方法时间,只是将a的值赋给了方法,相当于:

number ( 10 );

还有一种情况是引用类型的参数传递:它也是值传递,但是和基本类型的值传递有所区别。

public static void number(int [ ] a){
    System.out.println( a [1] );//输出数组第二个数据
    a [ 1] = 20; 
}

int [ ] a = {10, 30, 50};
number(a);
System.out.println( a );//这里输出的会是多少?

运行的结果是:

30

20

这里为什么和上面的代码不同呢?

其实运行原理是一样的,只不过数组在进行值传递时,是将地址码传递了。

然后修改了地址码中的数据。最后跳出方法后,输出的就是已经修改后的数据。

总结:基本类型和引用类型的参数在传递的时候有什么不同?

  • 都是值传递,但是

  • 基本类型的参数传输存储的数据值

  • 引用类型的参数传输存储的地址值

数组是引用类型

七、方法重载

什么是方法重载?

定义方法时,在一个类中,多个方法的名称相同,但他们行参列表不同。

比如:

public static void number(int [ ] a){
    System.out.println( a [1] );//输出数组第二个数据
    a [ 1] = 20; 
}
public static void number(int a){
    System.out.println( a );
}
public static void number(int a,intb){
    System.out.println( c=a+b );
}

上面定义的三个方法,方法名相同,但是形参表不同,定义是有效的。

一个类中,只要一些方法的名称相同、形参列表不同,那么它们就是方法重载了,修饰符,返回值类型是否一样也无所谓。

形参表不同指的是:形参的个数、类型、顺序不同。

八、return关键字

return:可以用在无返回值的方法中,作用是:立即跳出并结束当前方法的执行。

这个有什么用呢?

举一个例子:

需求:进行两个数字的除法用算:

public static void division (double a,double b){
    if(b == 0){//判断分母为0 跳出
        System.out.println( "0不能做分母");
        return;
    }
    double c = a / b;
    System.out.println(c);
}
division(80,4);  

我们还学过其他跳出关键词:

break;跳出并结束当前所在循环的执行。

continue;结束当前所在循环的当次循环,进入下一次执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值