JAVA中方法的调用【基础】

                                                                                                              JAVA中方法的调用【基础】

分两种情况:

1.方法调用发生在本类(即同类)中

--1.1当被调用的方法被static修饰为静态方法static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

     此时该静态方法可以直接在其他的本类方法中调用。

eg:

public class HelloWord {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str="HelloWord!";
        int a=0;
        int b=a+1;
        int result=0;
       
        for(int i=0;i<20;i++)
        {
            //Add方法调用
            result= Add(a,b);  //此处的参数a,b为实参。          
            
            System.out.println(str+" "+ result);
           
            a+=i;
           
        }
    }
    /**
     * 被调用方法,这里使用了static声明为静态方法
     * @param x
     * @param y
     * @return
     */

  //Add方法的定义,x,y均为方法定义时传入的形参。
    private static int Add(int x,int y)
    {
       
        return x+y;
    }
}

static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

--1.2当被调用的方法没有被static修饰时,该方法为非静态的。

     此时该非静态方法需要通过类的实例化来调用。

public class HelloWord {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str="HelloWord!";
        int a=0;
        int b=a+1;
        int result=0;
       
        for(int i=0;i<20;i++)
        {
            //Add方法调用
            //类的实例化
            HelloWord helloword=new HelloWord();
           
            //通过实例化的类进行Add方法调用
            result=helloword.Add(a, b);                       
           
            System.out.println(str+" "+ result);
           
            a+=i;
           
        }
    }
    /**
     * 被调用方法,没被static修饰,不是静态方法。调用时需要通过类的实例化进行调用
     * @param x
     * @param y
     * @return
     */
    private int Add(int x,int y)
    {
       
        return x+y;
    }
}

 

2.方法调用发生在不同类中。

  此无论被调用的方法是否有被static修饰为静态方法,都要通过类的实例化才能调用。

eg:

外部类:

public class Test {
    /**
     * 被调用方法Add
     * @param x
     * @param y
     * @return
     */
    public int Add(int x,int y)
    {
       
        return x+y;
    }
   
    /**
     * 被调用方法Sub
     * @param x
     * @param y
     * @return
     */
    public static int Sub(int x,int y)
    {
       
        return x-y;
    }
}

方法调用:

public class HelloWord {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str="HelloWord!";
        int a=5;
        int b=a+1;
        int result=0;
       
        for(int i=0;i<20;i++)
        {
            //Add方法调用
            //类的实例化
            Test test=new Test();
           
            //通过实例化的类进行Add方法调用
            result=test.Add(a, b);                       
           
            System.out.println(str+" "+ result);
           
            result=test.Sub(b, 1);                       
           
            System.out.println(str+" "+ result);
           
            a+=i;
           
        }
    }
   
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值