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]);
		}
	}

}

  

原文地址:https://www.cnblogs.com/wnzhong/p/7723001.html