zoukankan      html  css  js  c++  java
  • Java入门 之 方法

    1. 如何定义Java中的方法

      1.1 方法:解决一类问题的代码的有序组合,是一个功能模块

      1.2 定义一个方法:

        访问修饰符  返回值类型  方法名(参数列表){方法体}

      1.3 各部分解释:

        - 访问修饰符:方法允许被访问的权限范围, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用

        - 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void ;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值

        - 方法名:定义的方法的名字,必须使用合法的标识符

        - 参数列表:传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开 

    package com.imooc;
    
    public class Demo13 {
    
    	public static void main(String[] args) {
    		Demo13 test = new Demo13();
    		test.print();  //在main方法中调用print方法
    	}
    	public void print() {  //定义print的方法
    		System.out.println("hello demo13");
    	}
    
    }

    2. Java中无参无返回值方法的使用

      2.1 定义方法

    public void show(){    //访问修饰符  返回值类型为无返回值  方法名()    
        System.out.println("Hello");    //方法体放在一对大括号中
    }
    

      2.2 调用方法

    package com.imooc;
    
    public class Demo14 {
    	public static void main(String[] args) {
    		//创建对象,对象名为hello
    		Demo14 hello = new Demo14();
    		//通过 对象名.方法名() 调用方法
    		hello.show();
    	}
    	//定义方法
    	public void show() {
    		System.out.println("hello");
    	}
    
    }

    3. Java中无参带返回值方法的使用

      3.1 示例

    package com.imooc;
    
    public class Demo16 {
    	
    	public static void main(String[] args) {
    		//创建对象,对象名为hello
    		Demo16 hello = new Demo16();
    		//调用方法冰接收方法的返回值,保存在变量sum中
    		int sum = hello.calcSum();
    		System.out.println("sum =" + sum);
    	}
    	
    	//定义无参带返回值的方法(返回值为int类型,使用return获得返回值)
    	public int calcSum() {
    		int a = 5;
    		int b = 12;
    		int sum = a + b;
    		return sum;
    	}
    
    }
    

      3.2 注意

        - 如果返回类型为void,则方法中不能使用return返回值;

        - 方法的返回值只能有一个

        - 方法返回值的类型必须兼容,例如:如果返回值类型为int,则不能放回String型值

      3.3 练习

    package com.imooc;
    
    public class Demo18 {
    	
    	public static void main(String[] args) {
    		Demo18 hello = new Demo18();
    		int maxAge = hello.maxAge();
    		System.out.println("the max age is: " + maxAge);
    	}
    	
    	public int maxAge() {
    		int[] ages = {1, 11, 3, 33, 2, 22, 4, 44, 5};
    		int max = ages[0];
    		for (int i=0; i<ages.length; i++) {
    			if (ages[i] > max) {
    				max = ages[i];
    			}
    		}
    		return max;
    	}
    
    }

    4. Java中带参无返回值方法的使用

      4.1 方法的定义

        - 带一个String类型的参数,参数名为name,但是没有返回值

    public void show(String name){
        System.out.println("welcome " + name + "!");
    }
    

      4.2 方法的调用

        - 调用时必须传入实际的参数值:对象名.方法名(实参1, 实参2, ..., 实参n)

    HelloWorld hello = new HelloWorld();
    hello.show("Harry");
    

      4.3 形参和实参

        - 形参:定义方法时的参数,目的是用来定义方法需要传入的参数的个数和类型;

        - 实参:调用方法时的参数,是传递给方法真正被处理的值。

      4.4 注意:

        - 调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应

    public class HelloWorld{
        
        public static void main(String[] args){
            HelloWorld hello = new HelloWorld();
            hello.show(25.6);    //实参与形参类型不一致
        }
        
        public String show(String name){
            return "Welcome " + name + "!";
        }
    }

        - 调用方法时,实参不需要指定数据类型

    hello.show("i love you");

        - 方法的参数可以是基本数据类型,如int、double等,也可以是引用数据类型,如String、数组等

    package com.imooc;
    
    import java.util.Arrays;
    
    public class Demo19 {
    	
    	public static void main(String[] args) {
    		Demo19 hello = new Demo19();
    		int[] scores = {54, 34, 65, 23};
    		hello.print(scores);  //实参为整型数组
    	}
    	
    	public void print(int[] scores) {  //形参为整型数组
    		//使用Arrays类的toString()方法将数组转换为字符串并输出
    		System.out.println(Arrays.toString(scores));
    	}
    
    }

        - 当方法参数有多个时,多个参数之间以逗号分隔

    public int calc(int num1, int num2){
        int num3 = num1 + num2;
        return num3:
    }

      4.5 练习

    package com.imooc;
    
    public class Demo20 {
    	
    	public static void main(String[] args) {
    		Demo20 hello = new Demo20();
    		hello.calcAvg(94, 81);
    	}
    	
    	public void calcAvg(int num1, int num2) {
    		double avg = (num1 + num2)/2.0;
    		System.out.println("the average score is: " + avg);
    	}
    
    }

    5. Java中带参带返回值方法的使用

      5.1 方法的定义

    public String show(String name){
        return "Welcome " + name + "!";
    }

      5.2 方法的调用

    HelloWorld hello = new HelloWorld();  //创建对象hello
    String welcome = hello.show("John");  //调用带参带返回值的方法,将返回值存在变量welcome中
    System.out.println(welcome);
    

      5.3 练习

    package com.imooc;
    
    import java.util.Arrays;
    
    public class Demo21 {
    	
    	public static void main(String[] args) {
    		Demo21 hello = new Demo21();
    		int[] scores = {34, 23, 65, 15};
    		int count = hello.sort(scores);
    		System.out.println("there are " + count + " scores");
    	}
    	
    	public int sort(int[] scores) {
    		Arrays.sort(scores);
    		System.out.println(Arrays.toString(scores));
    		return scores.length;
    	}
    
    }

    6. Java中方法的重载

      6.1 什么是方法的重载:

        - 如果同一个类中包含了两个或者两个以上方法名相同,但 方法参数的个数、顺序或类型不同的方法。如下所示4个方法名称都为show,但方法的参数有所不同,因此都属于方法的重载:

    //无参数的方法
    public void show(){
        System.out.println("Welcome");
    }
    
    //重载show方法,一个字符串参数
    public void show(String name){
        System.out.println("Welcome " + name);
    }
    
    //重载show方法,两个参数,先String后int
    public void show(String name, int age){
        System.out.println("Welcome " + name);
        System.out.println("age " + age);
    }
    
    //重载show方法,两个参数顺序不同
    public void show(int age, String name){
        System.out.println("Welcome 2 " + name);
        System.out.println("age 2 " + age);
    }
    

      6.2 如何区分调用的是哪个重载方法:

        - 当调用被重载的方法时,Java会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行,如:

    public static void main(String[] args){
        HelloWorld hello = new HelloWorld();
        hello.show();    //调用无参的show方法
        hello.show("tom");    //调用带有一个字符串参数的show方法
        hello.show("jack", 20);    //调用先字符串参数后整型参数的show方法
        hello.show(20, "jack");    //调用先整型参数后字符串参数的show方法
    }
    

      6.3 判断方法重载的依据:

        - 必须是在同一个类中

        - 方法名相同

        - 方法参数的个数、顺序或类型不同

        - 与方法的修饰符或返回值没有关系

    7. 练习题:创建指定长度的int型数组,并生成100以内随机数为数组中的每个元素赋值,然后输出数组

    package com.imooc;
    //导入java.util.Arrays
    import java.util.Arrays;
    
    public class Demo23 {
    	
    	public static void main(String[] args) {
    		//创建对象hello
    		Demo23 hello = new Demo23();
    		//调用方法并将返回值保存在变量中
    		int[] nums = hello.getArray(8);
    		//将数组转换为字符串并输出
    		System.out.println(Arrays.toString(nums));
    	}
    	
    	public int[] getArray(int length) {
    		//定义指定长度的整型数组
    		int[] nums = new int[length];
    		//循环遍历数组,给数组赋值
    		for(int i=0; i<nums.length; i++) {
    			//产生一个100以内的随机数,并赋值给数组中的i成员
    			nums[i] = (int)(Math.random()*100);
    		}
    		//返回赋值后的数组
    		return nums;
    	}
    }

    8. 练习题:实现输出成绩前三名

    package com.imooc;
    
    import java.util.Arrays;
    
    public class Demo25 {
    	
    	public static void main(String[] args) {
    		int[] scores = {89, -23, 45, 23, 112, 45, 34};
    		System.out.println("the top3 is ");
    		Demo25 res = new Demo25();
    		res.showTop3(scores);
    	}
    	
    	public void showTop3(int[] scores) {
    		//将成绩排序,默认升序顺序
    		Arrays.sort(scores);
    		int num = 0;
    		//倒序遍历
    		for(int i=scores.length-1; i>=0; i--) {
    			if(scores[i]<0 || scores[i]>100) {
    				continue;
    			}
    			num++;
    			if(num > 3) {
    				break;
    			}
    			System.out.println(scores[i]);
    		}
    	}
    
    }
    

      

  • 相关阅读:
    漫谈程序员系列:咦,你也在混日子啊
    JVM加载class文件的原理机制
    maven编译的时候排除junit测试类
    mysql之——存储过程 + 游标 + 事务
    JSP页面之${fn:}内置函数
    生成24位字符串ID__IdGenerator.java
    oracle创建用户,表空间,虚拟路径,导入dbf
    eclipse手动修改默认工作空间
    资源
    http协议发送header+body+json及接收解析
  • 原文地址:https://www.cnblogs.com/wnzhong/p/7723001.html
Copyright © 2011-2022 走看看