Java方法
何为方法
Syetem.out.println():System是类,out是对象,println是方法
即其他语言的函数
public static void main() :amain为方法
加法方法:
package Method;
public class Demo1 {
public static void main(String[] args) {
System.out.println(add(3,2));
}
public static int add(int i,int j){//这里应该加static,不加的话会失败。
return i+j;
}
}
输出5
方法包含在类中
方法是用来调用的(即函数)
原子性:一个方法只实现一个功能
main方法尽量干净,其他功能尽量放到其他方法中,main来调用
定义方法
修饰符 返回值类型 方法名 (参数类型 参数名){
方法体,即执行语句
}
参数类型、参数名可以空不填
修饰符也是可选的
实参:实际调用方法使用时,传递进去的参数
形参:定义方法时,写在参数位置的参数
package Method;
public class Demo1 {
public static void main(String[] args) {
System.out.println(add(3,2));
}
public static int add(int i,int j){
return i+j;
}
}
形参为i,j
实参为2,3
如果方法存在返回值(即不是void),则需要最后写return,返回值。
return也是结束方法的出口,只要执行到方法中某处的return,则方法调用结束。
public修饰符
static修饰符(类变量)
package Method;
public class Demo1 {
public static void main(String[] args) {
System.out.println(max(4,8));
}
public static int max(int q,int w){
int m;
if(q>w){
m = q;
}else{
m = w;
}
return m;
}
}//输出8
方法的重载
重载:在一个类中,有相同的函数名称,但是参数不同
package Method;
public class Demo1 {
public static void main(String[] args) {
System.out.println(max(4,8));
System.out.println(max(3.0,7.0));
}//方法名相同,传递参数的类型不同
public static int max(int q,int w){
int m;
if(q>w){
m = q;
}else{
m = w;
}
return m;
}
public static double max(double q,double w){
double m;
if(q>w){
m = q;
}else{
m = w;
}
return m;
}//max方法重载
}
方法名称可以相同
参数列表必须必须不同(个数不同、或类型不同、或排列顺序不同)
仅返回类型不同,不足以构成方法重载
Java都是值传递,没有引用传递
可变参数
不定向参数:… 即可以传递任意多个,不限长度
指定参数类型后,在指定参数类型后用省略号。一个方法中只能一个可变参数,且任何普通参数都必须在其之前声明
package Method;
public class Demo2 {
public static void main(String[] args) {
Demo2 demo2 = new Demo2();//创建实例对象
demo2.method(1,2,3,4,5);//调用实例对象.method方法
//传递了5个:无所谓传递几个,没要求
}
//定义method方法时没加static,则在main引用时需要创建新的实例对象,通过实例对象.method方可调用
public void method(int ... i){//不定项参数
System.out.println(i[0]);
System.out.println(i[2]);//取出传递的第3个参数
}
}
public class Demo2 {
public static void main(String[] args) {
method(3,4,5,6);
}
//此时定义方法时,通过static定义,因此可以直接调用,不需要创建实例对象来调用
public static void method(int ... i){
System.out.println(i[0]);
System.out.println(i[2]);
}
}
public static void method(int ... i,int j){
System.out.println(i[0]);
System.out.println(i[2]);
}//此时定义会报错,因为含...的参数应该放在最后,而此时j放在了最后
package Method;
public class Demo5 {
public static void main(String[] args) {
printMax(2,4,5,6,7,8,22.5,11.5,3);//输出22.5
printMax(new double[]{4,5.5,6.5,8.9,11,3});//输出11.5
}
public static void printMax(double ... x){
if(x.length==0){
System.out.println("no");
return;//若输入长度为0,则直接跳出此方法,结束方法
}
double result = x[0];
for (int i = 0; i <x.length ; i++) {
if(x[i]>result){
result = x[i];
}
}
System.out.println(result);
return;
}
}