Java方法详解

方法详解:

·Java中的“方法”类似其他编程语言中的“函数”。Java中方法不能独立存在,必须定义在类中。逻辑上要么属于“类”要么属于“对象”。如果方法使用了“static”修饰那么这个方法就属于类,否则就属于这个类的对象。

 

·执行方法:

  方法不能独立执行,必须使用“类”或“对象”去调用它,它才能执行。使用static修饰的类方法既可以使用类来调用也可以使用对象来调用,不带static的普通方法只能使用对象来调用。

 

  语法:类.方法   对象.方法

 

·同一个类中的方法可以调用这个类中的其他方法。调用普通方法使用this,调用static修饰的方法使用类,this和类也可以不写,默认会自动使用。

 

l  方法参数传递

·形式参数:方法用于接收的参数叫形式参数。

·实际参数:调用方法时给方法传递的参数叫实际参数。

 

  Java中方法参数传递就是传值,值是实际参数的副本。也就是说实际参数复制了一份,将复制的副本传递给形式参数的。

  方法参数传递可以传变量,也可以传送对象引用。

  不同的方法有不同的栈区,不同的栈区都可以存放自己独立的变量,A栈区与B栈区中的变量是各自独立的,所以即使他们都有相同名字的变量也不会有影响。

 


//演示了方法值传递,变量传递

 

public class ThisTest

{

         publicstatic void swap(int a, int b)

         {

                   inttmp = a;

                   a= b;

                   b= tmp;

 

                   System.out.println("swap:" + a + " " + b );

         }

 

         publicstatic void main(String[] args)

         {

                   inta = 6;

                   intb = 9;

                            ThisTest.swap(a,b);        //演示了方法值传递,这里传递的是变量。

 

 

                   System.out.println("main" + a + " " + b);

         }

}

 


 //引用变量传递:

 

class DataT

{

         publicint a;

         publicint b;

}

 

public class ThisTest

{

         publicstatic void swap(DataT dw)         //传递过来的是一个地址,指向那个对象。这里的dw引用变量存在swap方法栈内存中。

         {

                   inttmp = dw.a;

                   dw.a= dw.b;

                   dw.b= tmp;

 

                   System.out.println("swap" + dw.a + " " + dw.b);

         }

 

         publicstatic void main(String[] args)

         {

                   DataTdatat = new DataT();

                   datat.a= 6;

                   datat.b= 9;

                   ThisTest.swap(datat);    //引用变量传递,传递的是一个地址,所以datat引用变量与dw引用变量指向的是同一个对象。还有引用变量就是一个地址,这个地址指向堆内存的对象,此处的引用变量存在main方法和swap方法的栈区内存中。

                   System.out.println("main" + datat.a + " " + datat.b);

         }

}

 

 


l  形参个数可变的方法,有两种

可变形参:指定不确定的参数个数。

1、三个点号:在最后一个形参后加三个点“…”就表示该参数可以接受多个参数值,多个参数值被当成数组传入。三个点实际参数也可以是数组。

2、数组。

 

三个点与数组可变参数的差别:数组形式的参数可位于方法形式参数列表的任意位置,但是三个点只能位于形式参数列的最后一个,并且一个方法中只能定义一个三个点的可变参数。

 

 

 


public class Var

{

         //publicstatic void test(int a, String[] person)    这里是使用数组,下面使用的是三个点。

         publicstatic void test(int a, String...person)        //这里就是三个点,定义的可变形参,跟数组类似,但有不同之处。

         {

                   for(Stringok : person)

                   {

                            System.out.println(ok);

                   }

 

                   System.out.println(a);

         }

 

         publicstatic void main(String[] args)

         {

                   //     Var.test(520,newString[]{"zhangsan","lisi"});     形式参数是接受数组,所以这里传值也要传数组。

                   Var.test(520,"zhangsan","lisi","wangwu");

         }

}

 

 

 


l  递归方法,这里我不太懂所以就先略过,有机会在补充上吧

 

 

 

l  方法重载

  同一个类中两个或多个方法的方法名字相同,但方法参数不同(参数个数不同或参数类型不同),不受方法返回类型影响(是参数类型并不是方法返回类型)

 

·在被重载的方法里包含了长度可变的形参,传递实际参数个数与普通方法参数列表个数匹配时,则传递参数给普通方法。如果要传递给可变长度形参要么参数个数不要与普通方法相等,要么使用数组传递值,这样它就是知道是给可变长度形参的那个方法传递的值了。


·在继承中,子类方法与父类方法名字相同,形参列表不同也是方法重载。

 

例子:

//普通方法重载

 

public class Var

{

         //publicvoid test()

         publicvoid test(int i)

         {

                   System.out.println(i);

         }

 

         publicvoid test(String msg)

         {

                   System.out.println(msg);

         }

 

         publicstatic void main(String[] args)

         {

                   Varvar = new Var();

 

                   //var.test();     记住方法是有括号的,即使不给它传参数。

                   var.test(555);

                   var.test("Haha");

         }

}

 

 


//带有可变参数的方法重载

 

public class Var

{

         publicvoid test(String msg)

         {

                   System.out.println(msg);

         }

 

         publicvoid test(String... person)

         {

                   System.out.println("hh");

         }

 

         publicstatic void main(String[] args)

         {

                   Varvar = new Var();

                   var.test();

                   var.test("zhangsan","lisi");

                   var.test("MSG");

                   var.test(newString[]{"person"});

 

         }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值