A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liangwaqi 初级黑马   /  2017-10-26 16:18  /  839 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中,如何调用方法
很多初学者在学习“方法”时,弄得很头晕,下面总结下,如何调用各种各样的方法。
先分两个方面来说明
1、先区分有哪些方法
2、针对每一种方法,怎么去调用

先来看看,如何区分方法有哪些
在java中,一般来说,方法就分为3种:
a、构造方法
b、普通方法
c、静态方法

下面是对以上3种方法的区分办法:
1、如果一个方法没有返回值类型(如果有返回值类型,它会在方法名左边出现),并且方法的名称和类名一模一样,那么这个方法就是构造方法
2、如果一个方法,有返回值类型,或者返回值类型是void,并且方法声明上没有static关键字,那么这个方法就是普通方法
3、如果一个方法,有关键字static,那么这个方法就是静态方法

如果上面3点看着有点吃力,那可以看下面的直观格式:
a、构造方法的格式:
权限修饰符 构造方法名(参数列表){
        方法体
}
b、普通方法格式:
权限修饰符 返回值类型 方法名(参数列表){
        方法体
}
c、静态方法格式:
权限修饰符 static 返回值类型 方法名(参数列表){
        方法体
}

接下来开始说,如何去调用
注意:
1、由于怎么定义方法、怎么调用方法,都属于语法的内容,也就是java语言开发团队定义的规则,就好像是规章制度一样,人人必须遵守,所以为了快速学习,使用者就不要去想为什么这样定义、为什么这么调用的问题了,等你熟练了,你自然就会明白这些事情,目前就按照规则办事情先。
2、调用格式有好几种,这里只介绍一部分,掌握这一部分就足够。

下面是每种方法的调用格式,每一种格式,初学者都必须死记硬背下来,没有背下来的,就写不出代码。
a、构造方法按照下面格式调用:
格式1:new 构造方法名(参数列表);
格式2:类名  对象名 = new 构造方法名(参数列表);
注意:这里的对象名,其实就是一个变量名

b、普通方法按照下面格式调用:
格式1:对象.方法名(参数列表);          //返回值类型是void的时候采用这个格式       
格式2:返回值类型  变量名 = 对象.方法名(参数列表);
注意:由此可见,普通方法不管用哪一种格式来调用,都需要提前准备好一个对象(也就是说要先调用构造方法,因为调用构造方法后,就得到一个对象,参考构造方法的调用格式)

c、静态方法按照下面格式调用:
格式1:类名.方法名(参数列表);         //返回值类型是void的时候采用这个格式
格式2:返回值类型  变量名 = 类名.方法名(参数列表);
注意:由此可见,静态方法的调用,不需要创建对象,直接类名来调用即可,也强烈要求通过类名来调用

接下来,开始各种代码
下面代码,由于篇幅有限,所以定义方法时,就写方法声明(即方法中,包含方法名的那一行代码),不写方法体了,因为只需要知道方法声明,就能知道怎么调用方法了:

假设有一个类 Demo。在这个类中有如下方法:
1、构造方法的调用如下(这些方法,都符合构造方法的格式,所以这些方法属于构造方法)
既然是构造方法,那调用格式有两个:
格式1:new 构造方法名(参数列表);
格式2:类名  对象名 = new 构造方法名(参数列表);

public Demo(){...}
上面方法,这样来调用:
第一种(采用格式1):new 构造方法名(参数列表);
        new Demo( );                //写完了,就这样调用!这种格式创建出来的对象,就叫匿名对象
第二种(采用格式2):类名 对象名 = new 构造方法名(参数列表);
        Demo d1 = new Demo( );         //通过格式2创建出来的对象,叫做“有名字的对象”,对象名就是“d1
       
public Demo(int num){...}
        这时候,方法上有参数了,按照一个原则来调用即可,原则:参数列表需要什么参数,需要几个参数,需要参数的顺序是什么,我们写代码时,就按照参数列表来传递参数即可(它需要什么参数,程序员就给什么参数即可)
        第一种(采用格式1):new 构造方法名(参数列表);
        Demo(120);                        //因为参数是int类型,所以随便传递一个int类型的参数进来即可(120就是int类型的一个数字)

        第二种(采用格式2):类名 对象名 = new 构造方法名(参数列表);
        Demo d = new Demo(240);       

public Demo(String str){...}
        第一种(采用格式1):new 构造方法名(参数列表);
        new Demo("abc");                //因为参数列表是String str,也就是说,参数列表“规定”我们必须传递一个字符串进来,所以我就随便传递了一个字符串(“abc”)作为参数了
        第二种(采用格式2):类名 对象名 = new 构造方法名(参数列表);
        Demo d = new Demo("kkk");

public Demo(Person p){...}
        第一种(采用格式1):new 构造方法名(参数列表);
        Person p = new Person( );
        new Demo(p); //由于这个构造方法的参数列表中,参数类型是 Person,是一个类名,表明我们调用的时候,需要传递Person对象,或者Person的子类对象进来
       
        Student stu = new Student( );                //Student是Person的子类
        new Demo(stu);                                            //stu是Person的子类Student 创建出来的对象,所以stu也可以作为参数传递给这个构造方法
       
        第二种(采用格式2):类名 对象名 = new 构造方法名(参数列表);
        Demo d1 = new Demo(new Person( ));                //把Person的匿名对象,作为参数
        Demo d2 = new Demo(new Student( ));        //把Student的匿名对象,作为参数

public Demo(int[ ] arr){...}
        第一种(采用格式1):new 构造方法名(参数列表);
        int[ ] arr = {111,222,333};
        new Demo(arr);                                        //由于这个构造方法的参数列表是int[ ] arr,表明我们传递参数时,需要传递1个 int数组对象,所以我在前面就首先准备好了一个int数组对象(就是前面的arr)
        第二种(采用格式2):类名 对象名 = new 构造方法名(参数列表);
        int[ ] array = {3232, 4545, 6767};
        Demo d = new Demo(array);

public Demo(String[ ] arr){...}
        第一种(采用格式1):new 构造方法名(参数列表);
        String[ ] arr = {"aaa", "bbb", "ccc"};
        new Demo(arr);                                                        //由于这个构造方法的参数列表是String[ ] arr,表明我们传递参数时,需要提前准备好一个字符串数组,所以调用前,我就准备好了前面的字符串数组{"aaa", "bbb", "ccc"};
        第二种(采用格式2):类名 对象名 = new 构造方法名(参数列表);
        String[ ] kkk = {"aaa", "bbb", "ccc"};
        Demo d = new Demo(kkk);

public Demo(Person[ ] arr){...}
        第一种(采用格式1):new 构造方法名(参数列表);
        Person[ ] personArr = {new Person( ),  new Person( ), new Person( )};
        Demo(personArr);                                //由于这个构造方法的参数列表是Person[ ] arr,表明我们传递参数时,需要提前准备好一个Person数组,前面的personArr就是我准备好的Person数组
        第二种(采用格式2):类名 对象名 = new 构造方法名(参数列表);
        Person[ ] personArr = {new Person( ),  new Person( ), new Person( )};
        Demo d = Demo(personArr);
       
2、普通方法的调用如下
//由于method01到method07方法,返回值类型都是void,所以这几个方法,只能采用格式1:对象.方法名(参数列表);
       
public void method01(){....}

        //针对上面的方法,下面代码演示了怎么去调用该方法:

        Demo d1 = new Demo( );        //创建对象的代码。d1,就是创建出来的对象
        d1.method01( );                //这行调用方法的代码,就符合格式了:对象.方法名(参数列表);可见,必须提前准备好一个对象(d1)

        new Demo( ).method01( ); //这行代码,也符合格式:对象.方法名(参数列表);  可见,new Demo()就是对象(匿名对象)

public void method02(int num1, int num2){....}
        Demo d = new Demo();
        d.method02(123, 777);        //由于method02方法需要2个int类型的参数,所以调用时,需要传递2个int的数字即可。

public void method03(String str, boolean flag){....}
        Demo d = new Demo();
        d.method03("aaa", true);        //这里传递参数时,需要一一对应,"aaa"对应参数列表中的str,true对应flag

public void method04(Person p1,  Person p2){....}
        Demo d = new Demo();
        Person px = new Person();
        Person py = new Person();
        d.method04(px, py);        //由于method04方法,需要2个参数,依次是Person对象、Person对象,所以我在调用时,提前准备好了2个Person对象


       
public void method05(int[ ] arr){....}
        Demo d = new Demo();
        int[] array = {11,22,33,44,55};
        d.method05(array);

public void method06(String[ ] arr,  int count){....}
        Demo d = new Demo();
        String[] strArr = {"aaa","bbb","ccc"};
        int count = 666;
        d.method06(strArr, count);        //strArr对应method06的第一个参数,count对应第二个参数(仍然符合参数需要什么类型的参数,我就传递什么类型的参数)

public void method07(Person[ ] arr){....}
        Demo d = new Demo();
        Person[] arr = {new Person(), new Person(), new Person()}; //提前准备好一个Person数组
        d.method07(arr);

//接下来,返回值类型不是void的普通方法,统一使用格式2:返回值类型  变量名 = 对象.方法名(参数列表);
public int method08( ){....}
        Demo d = new Demo();
        int num = d.method08( ); //非构造方法的方法名左边的东西,就叫做返回值类型,这里,int就是method08方法的返回值类型
        System.out.println(num); //一般来说,拿到返回值num了,是需要进行下一步处理,例如在这里,我打印了
       
public String method09( ){....}
        Demo d = new Demo();
        String str = d.method09();        //method09方法的返回值类型是String,所以这里我用String,来接收method09的返回值
        System.out.println(str);

public Person method10( ){....}        //返回值类型是Person,是一个类名,表明调用该方法时,可以用Person类接收,也可以用Person的父类来接收
        Demo d = new Demo();
        Person p = d.method10();
        System.out.println(p);

        Object obj = d.method10(); //由于Object是Person的父类,所以也可以用Object来接收method10方法的返回值
        System.out.println(obj);

public int[ ] method11( ){....}        //返回值类型是int[]
        Demo d = new Demo();
        int[] arr = d.method11(); //返回值是一个数组,所以作为一个有好奇心的人,会好奇数组中有什么元素,所以下面我开始遍历数组了
        for(int i=0; i<arr.length; i++){
                System.out.println(arr[i] + " ");
        }

public String[ ] method12( ){....}
        Demo d = new Demo();
        String[] arr = d.method12();
        for(int i=0; i<arr.length; i++){
                System.out.println(arr[i] + " ");
        }

public Person[ ] method13( ){....}
        Demo d = new Demo();
        Person[] arr = d.method13();
        for(int i=0; i<arr.length; i++){
                System.out.println(arr[i] + " ");
        }

3、静态方法的调用如下
method14到method19,返回值类型不是void类型,所以统一使用格式2:返回值类型  变量名 = 类名.方法名(参数列表);
public static int method14( ){....}
        int num = Demo.method14();
        System.out.println(num);        //由于我很好奇num等于多少,所以这里就直接输出了

public static String method15( ){....}
        String str = Demo.method15();
        System.out.println(str);

public static Person method16( ){....}
        Person p = Demo.method16();
        String name = p.getName(); //获取p的姓名
        System.out.println(name);  //打印姓名

public static int[ ] method17( ){....}
        int[] arr = Demo.method17();
        System.out.println(arr.length); //这次挺好奇arr数组的长度是多少,所以我只打印它的长度了

public static String[ ] method18( ){....}
        String[] arr = Demo.method18();
        System.out.println(arr[0]);        //我只想打印arr数组的第一个元素,所以就不遍历这个数组了

public static Person[ ] method19( ){....}
        Person[] arr = Demo.method19();
        Person p = arr[0];                //我不想遍历数组,只想获取第一个元素的名字
        String name = p.getName();        //获取名字
        System.out.println(name);        //打印出来,看看名字是什么

//method20方法的返回值类型是void,所以只能用格式1:类名.方法名(参数列表);
public static void method20( ){....}   
        Demo.method20();





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马