1.方法的定义
(1)方法声明的语法规则如下所示:
[修饰符] 返回值类型 方法名称([参数列表]){
// 方法体
}
- 方法修饰符:是一种关键字,用来描述方法、类、变量等各种元素的声明,一个程序可以同时拥有多个修饰符,主要有:
访问权限修饰符:public/protected/private/默认
非访问修饰符:static abstract/final、synchronized 、volatile等
其它修饰符:transient、native、strictfp等
- 方法头:返回值类型 方法名([参数列表]) [throws]
- 返回值类型: void 表示没有返回值
- 方法体: 代码块(完成功能的代码片段)
(2)方法定义完成后不会主动执行,执行方法需要被调用
(3)方法之间可以相互调用:
- static 方法只能直接调用 static 方法
- static方法调用使用 类名.方法名(); 调用。 调用同一个类中的方法,可以直接写方法名();
- 一个方法可以被多次调用
(4)方法不能嵌套,不能在一个方法中声明另一个方法。
(5)类需不需导包?
- 被调用方法所在的类如果和调用方法的类在同一个包下,不需要导包
- java.lang 包下的类都不需要导包
- 其他情况需要先导类所在的包,再使用
2.方法的返回值类型
(1)返回值类型表示当前方法执行完后会返回一个结果,这个结果的类型就是声明时设置的类型
(2)如果一个方法没有返回值,使用void关键字声明。
(3)对于有返回值的方法,其方法体中至少有一条return语句,形式如下:
return 值/表达式; 值得类型必须和声明的类型一致
例如:
public static int sum(){}
- 此方法返回值类型为 int 表示调用这个后会返回一个 int 类型的值
- 在方法体中用 return 关键字后紧跟一个值表示将值返回给调用处
(4)void 表示无返回值,则不需要在方法体中使用 return 返回值.
(5)Java中只有值传递
- 基本数据类型传递的是真实值
- 引用数据类型传递的也是值,只不过这个值是内存地址。
目前方法正常执行结束有三种情况:
- 所有代码正常执行吗
- 执行了 return 语句
- System.exit(value);【特例】
3.可变长度参数
可变长度参数可以在方法中声明,用于接受不确定数量的参数。
使用如下所示:
public [static] int test(int... nums){}
注意:在这个方法的内部,可变长度参数会被当作一个数组处理,所以在该方法中操作时,可以像操作数组一样操作。
- 每个方法只能有一个可变长度参数,而且必须是最后一个参数,例如:
-
public static void print3(int a,int... x){ int len= x.length; for(int i=0;i<len;i++){ System.out.println(x[i]); } }
可变长度参数和数组的区别:
- 数组作为参数必须要传值,可变长度参数则不一定
- 可变长度参数只能用于参数列表的最后一个,数组则不一定
- 可变长度参数只能在参数列表出现,数组可以定义局部变量
- 数组参数和可变长度参数可以同时在同一个方法的参数列表中出现