java:方法 day13

活动地址:CSDN21天学习挑战赛

一、方法

方法相当于C语言中的函数。二者都是程序实现功能的基本单位。

java程序要想运行,必须调动一个或者数个方法,程序入口是main方法。C程序想要运行必须调动一个或数个函数,且程序入口是main方法。

但不同的是,C语言中的函数可以独立存在,而JAVA的方法只能以成员的形式存在在类中。

二、方法的创建与调用

在此之前,大家可以先读一段代码。

package Object1;

/**
 * 定义一个类:MyFirstClass
 * 1)添加speak 成员方法,输出我是一个好人
 * 2)添加cal01成员方法,可以计算从1+..+1000的结果,并返回
 * 3)添加cal02成员方法,该方法调用时接收一个数n,计算从1+..+n的结果
 */
import java.util.Scanner;
public class Method001 {
	public static void main(String[] arg) {
		MyFirstClass a = new MyFirstClass();//创建一个MFC型的变量a
		a.speak();          //调用a变量的一个方法speak()
		int i1 = a.cal01();      //调用另一个方法,并将返回值赋值给int类型的i1;
		System.out.println(i1);

		Scanner sc = new Scanner(System.in); //这是键盘输入时的创建,如今应该能够读懂了吧。 
        //创建一个Scannery类型的对象sc,SC的空间大小由System.in这个变量决定
		int n = sc.nextInt();//调用sc下边的方法nextInt,将返回值返回给n
		int i2 = a.cal02(n);//调用方法
            //n为实参,形参和实参名不一定要一致,但类型要一致
		System.out.println(i2);
	}
}

class MyFirstClass{
	public void speak() {
	/* public表示公共类
	 * void 无返回值方法
	 * speak是方法名
	 * ()内部是形式参数表
	 */
		System.out.println("我是一个好人");
	}
	public int cal01() {
		//int说明一个返回值类型为int的方法
		int i1 = 0;
		for(int i = 1; i <= 1000; i++) {
			i1 += i;
		}
		return i1;
	}
	public int cal02(int n) {//形参
		//int说明一个返回值类型为int的方法
		int i1 = 0;
		for(int i = 1; i <= n; i++) {
			i1 += i;
		}
		return i1;
	}
}

1、方法的创建

[方法类型]  [返回值类型]  方法名(形参类型 形参; 形参类型 形参;。。。){

           方法的主体

           return 返回值名;

}

方法的修饰符:public(公共类)...proptected,默认,private四种

返回值类型:包括返回值变量的类型和void;其中void表示该方法没有返回值(返回null)。一个方法只能有一个返回值,多个结果时可以借助引用变量。

方法名:方法调用时的名字

()内的是形参表:(下边详讲)

方法的主体:方法被调用时执行的语句。是一段意义完整的代码段。

方法可以嵌套使用,但不能嵌套定义。

return语句:如果需要有返回值,就可以添加,return是方法的结束语句。

2、方法的调用

类名 对象名 = new 类名():;

对象.方法名();

创建一个对象,以对象的名义调用方法。

细心的人应该可以发现,方法的调用与属性的调用不能说类似,只能说说是完全一致。为什么呢?

我的看法是:无论是函数还是方法,都是一段语句的集合,是有返回值的,且只能有一个返回值(哪怕是void,也会返回一个null),由于返回值的存在,我们就可以把这个方法看成一个变量, 根据输入的内容输出一个常量。这就是一个另类的变量,动态的变量。所以从这个角度上来看,方法的调用和属性的调用一致就不难理解了,当然由于它是另类的变量,有一些另类的功能也就可以理解了。

(1)同一个类中的方法可以直接调用

(2)不同类,但是同一个文件中的方法调用要用上述方法调用

(3)跨包的调用则需要先引用import。

(4)方法的调用有限制,被调用也有限制,是否被限制,限制的程度如何与方法前的方法修饰符有关。

3、方法的好处:增加复用性

将已经实现的功能,抽象,封装起来,在之后的代码使用。

4、形参列表:

(1)一个方法可以有0个或多个形参。

(2)形参类型可以是基本数据类型,也可以是引用数据类型

(3)调用时,括号内填的是实参,实参的类型要与形参的类型一一对应。

三、传参

1、形式参数与实参(关于参数定义域的问题,在此不做展开)

形参在被调用的方法内部,调用开始时被创建出来,调用结束,被形参会被销毁,

实参在被调用的方法外,作用是把形式参数需要的值传到给实参。不参与被调用的方法的运行,所以值不会有任何变化(这里把引用参数的值看成那一段地址。)

注: 不同的方法在运行时会形成不同的变量栈,在被调用时,方法就是申请一片空间作为自己的变量栈,存放自己的变量,而方法只能操作自己的变量,对于其他变量栈中的变量无权操作(比如实参对于被调用的方法)

2、引用变量

前边说过,被调用方法无法操作原方法中的变量,但引用变量特别的地方在于,它真正的值存储在堆中,如果有堆中某一个引用变量类型变量的地址,就可以对该堆中的数据进行操作。

那么,被调用方法有这个地址吗?答案是有,因为传参时被传送过来的值就是地址。

3、返回值return;

返回值return返回的也是一个值。还是分成两种:字面值和地址

关于返回值的接收,就需要用对应的数据类型去接受。

需要注意,返回值返回只能返回一个值,如果想要返回多个值,就需要把这些值放入引用数据变量中(如果类型相同就放进数组中,如果不同就放进类和对象中)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值