栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

狂神JAVASE系列-03方法篇

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

狂神JAVASE系列-03方法篇

1.0 方法的定义及其调用

      

      

 调用系统类 System 中的标准输出对象 out 中的方法 println()

Java方法可以理解成其他编程语言中的函数,将某一类功能抽象出来,也就是解耦,目的也是为了可扩展性,即:方法就是完成特定功能的一段代码。

那么如何定义方法?

        语法格式:      

修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
}

代码示例:    

public class Demon01 {
    //main方法
    public static void main(String[] args) {
        int sum = add(1,2);
        System.out.println(sum);
        test();
    }
    //加法方法
    public static int add(int a,int b){
        return a+b;
    }
    public static void test(){
        //循环输出1-1000之间能被5整除的数,并且每行输出3个
        for (int i = 0; i < 1000; i++) {
            if(i%5==0){
                System.out.print(i+"t");
            }
            if(i%(5*3)==0){
                System.out.println("n");
            }
    }

 参数说明:(参考Javav-菜鸟教程:)    

  • 修饰符:修饰符(可选参数)告诉编译器如何调用该方法以及定义了该方法的访问类型。
  • 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法没有返回值,那么关键字为void。
  • 方法名:一个方法具体叫什么?。
  • 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
  • 方法体:方法体包含具体的语句,定义该方法的功能。

 *方法调用

*注:若方法返回值是void,方法调用一定是一条语句。

代码示例

public class Demon02 {
    public static void main(String[] args) {
        int shuru = max(1,1);  //方法调用
        System.out.println(shuru);
    }
    public static int max(int num1,int num2){
        if(num1==num2){
            System.out.println("num1==num2");
            return 0;
        }
        if(num1>num2){
            return num1;
        }else {
            return num2;
        }

    }
}

  分析:上述代码包含 两个方法,分别是main 方法和 max 方法。

其中,main 方法是被 JVM 调用的,除此之外,main 方法和其它方法没什么区别。

main 方法的头部是不变的:

public static void main(String[] args) {}

public 和 static为修饰符,返回 void 类型值,方法名字是 main, String[] 类型参数。String[] 表明参数是字符串数组。

2.0 值传递

        定义一个方法需要传参,例如上述方法max(int a,int b),那么调用此方法时,需要提供参数且必须按照参数列表指定的顺序提供。

代码示例:    

public class Demon03 {
    public static void main(String[] args) {
        int num1 = 1;
        int num2 = 2;
        System.out.println("交换前 num1 的值为:" +
                num1 + " ,num2 的值为:" + num2);
        swap(num1, num2); //方法调用
    }
    
    public static void swap(int a1, int a2) {
        int temp = a1;
        a1 = a2;
        a2 = temp;
        System.out.println("tt交换后 n1 的值为 " + a1
                + ",n2 的值:" + a2);
    }
}

        说白了,如果这个方法需要传参,那么传参的要按照顺序来进行。要做到实参和形参一一对应。

3.0 方法重载

  代码示例:

    public static int max(int num1,int num2){
        if(num1==num2){
            System.out.println("num1==num2");
            return 0;
        }
        if(num1>num2){
            return num1;
        }else {
            return num2;
        }

   

        分析上述代码:上述定义的max方法只能比较两个int型数据。如果想比较1.2和2.2,即比较两个浮点数值的大小怎么办?  

    public static int max(float num1,float num2){
        if(num1==num2){
            System.out.println("num1==num2");
            return 0;
        }
        if(num1>num2){
            return num1;
        }else {
            return num2;
        }

        我们将max方法中传参的类型改为float即可实现我们的需求。那么创建一个有相同方法名但是参数不同的方法,就像上面那样,这叫什么?---------------->方法重载

        谈到这边呢,容易产生一个问题:既然两个方法名都一样,那么我在调用的时候怎么调?,也就是程序如何知道我是想比较int型还是float型?

        示例: 

public class Demon04 {
    public static void main(String[] args) {
        //显然,方法名一样,但是程序会根据传递参数的类型,来准确的识别该调那种
        int result1 = max(10,20);  
        double result2 = max(1.2,1.1);
        System.out.println(result1);
        System.out.println(result2);

    }
    public  static  int max(int a,int b){
        if(a>b){
            return a;
        }else {
            return b;
        }
    }
    public  static  double max(double a,double b){
        if(a>b){
            return a;
        }else {
            return b;
        }
    }
}

       分析上述可知: 根据传递参数的类型,即可确定时该如何调用的问题。也就是如果传递的是int型参数,则那么int型参数的max方法就会被调用,反之亦然。

方法重载总结:

  • 在一个类中,具有相同的方法名,但是具有不同的参数列表(什么是方法重载,3个条件)
  • 什么是不同的参数列表?例如参数个数不同,类型不同,参数排列顺序不同等)
  • 重载的方法必须拥有不同的参数列表。不能仅仅依据修饰符或者返回类型的不同来重载方法。那么有个隐含的条件在这里,就是这个修饰符和返回类型可以一样。
  • Java编译器根据参数列表的差异性进而判断哪个方法应该被调用。
  • 方法重载有什么好处?可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字
4.0 构造方法

        构造方法和它所在类的名字相同,但构造方法没有返回值。

        不管你是否自定义构造方法,所有的类都有构造方法,因为 Java 自动提供了一个默认构造方法,默认构造方法的访问修饰符和类的访问修饰符相同(类为 public,构造函数也为 public;类改为 protected,构造函数也改为 protected)。

一旦你定义了自己的构造方法,默认构造方法就会失效。(菜鸟教程)

 

5.0 命令行传参(了解即可)

        有时候希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现。

命令行参数是在执行程序时候紧跟在程序名字后面的信息。

public class CommandLine {
   public static void main(String[] args){ 
      for(int i=0; i

         注:如果想直接运行一个class文件,需要找到其包路径,然后才能加载,否则是执行不了的。如上面报错一样,必须回退到这个src。

6.0 可变参数
  •  JDK1.5开始,Java支持传递同类型可变参数给一个方法
  • 在方法声明中,在指定参数类型加一个省略号
    public class Demon05 {
        public static void main(String[] args) {
            Demon05 demon05 = new Demon05();
            demon05.test(1);
            demon05.test(1,2,3,4,5);
            
        }
    //你也不知道你要传递几个参数
        public void test(int ... i){
            System.out.println(i[0]);
        }
    }
  • 一个方法中只能指定一个可变参数,且必须是方法的最后一个参数,任何普通的参数在它之前进行声明。例如 int x, int ... i就不会报错,而int ... i,int x就会报错。
  • int... i 这个参数必须都是int  也就是是一个类型的。

示例:

        

代码示例:   

public class Demon05 {
    public static void main(String[] args) {
        //调用可变参数的方法
        printMax(34,3,3,2,56.5);
        printMax(new double[]{1,2,3});
    }
    public static  void  printMax(double... numbers){
        if(numbers.length==0){
            System.out.println("No argument");
        }
        double result = numbers[0];
        //排序
        for (int i = 1; i < numbers.length; i++) {
            if(numbers[i]>result){
                result = numbers[i];
            }

        }
        System.out.println("The max value is"+ result);
    }
}

        

        

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/863430.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号