方法(method)具有 一段独立功能的代码块,不调用就不执行。
方法需要先定义才调用
方法的定义和调用
定义:
方法与方法之间是平级关系,不能嵌套定义。
public static void 方法名(){
//方法体
}
调用:
方法名( );
实例:
public class Demo1Method {
public static void main(String[] args) {
eat();
}
public static void eat(){
System.out.println("吃饭");
study();
}
public static void study()
{
System.out.println("学习");
}
}
案例:
需求:
设计一个方法method,方法中定义一个变量,判断这个变量是技术还是偶数,并在main中调用method。
public class Demo2Method {
public static void main(String[] args) {
method();
}
public static void method() {
int number =10;
if(number%2==0)
{
System.out.println("偶数");
}
else
{
System.out.println("奇数");
}
}
}
打印结果:
偶数
带参数方法的定义和调用
定义:
格式1:
public static void 方法名(参数) {
}
格式2:
public static void 方法名(数据类型 变量名){
}
格式3:
public static void 方法名(数据类型 变量名1,数据类型 变量名2,......){
}
方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错。
方法定义时,多个参数之间使用(,)分隔
调用:
格式1:
方法名(参数);
格式2:
方法名(变量名/常量值);
格式3:
方法名(变量名1/常量值1,变量名2/常量值2);
实例:
奇偶判断
public class Demo2Method {
public static void main(String[] args) {
method(10);
}
public static void method(int number) {
if(number%2==0)
{
System.out.println("偶数");
}
else
{
System.out.println("奇数");
}
}
}
形参和实参
形参(形式参数):方法定义中的参数
实参(实际参数):方法调用中的参数
案例:
设计一个方法用于打印n到m之间所有的奇数
public class Demo3Test {
public static void main(String[] args) {
print(20,30);
}
public static void print(int n,int m) {
System.out.println(n+"到"+m+"之间的奇数为");
for (int i = n; i <=m ; i++) {
if(i%2==1)
{
System.out.println(i);
}
}
}
}
打印结果:
20到30之间的奇数为
21
23
25
27
29
带返回值放法的定义和调用
定义:
格式:
public static 数据类型 方法名(参数){
return 数据;
}
调用:
格式:
数据类型 变量名=方法名(参数);
实例:
求两个数的和
public class Demo4Test {
public static void main(String[] args) {
int sum=add(10,20);
System.out.println(sum);
}
public static int add(int a,int b)
{
int c=a+b;
return c;
}
}
打印结果:
30
放法的通用格式
格式:
public static 返回值类型 方法名(参数){
方法体;
return 数据;
}
方法的注意事项
- 方法不能嵌套语句
- 方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写,如果写return,后面不可以有具体的值。
- return下面,不能编写代码,因为永远执行不到。
实例:
import java.sql.SQLOutput;
public class Demo3Test {
public static void main(String[] args) {
print(20,10);
}
public static void print(int n,int m) {
if(m<n)
{
System.out.println("您的数据有误请检查");
return;//可用于结束方法,将方法从站中弹出,该过程称之为方法的弹栈
}
System.out.println(n+"到"+m+"之间的奇数为");
for (int i = n; i <=m ; i++) {
if(i%2==1)
{
System.out.println(i);
}
}
}
}
打印结果:
您的数据有误请检查
方法重载
方法名相同,参数也完全相同,称为方法的重复定义,是一种冲突性错误。 调用方法的时候,Java虚拟机会通过不同的参数来区分方法。
在同一个类中,定义了多个同名的方法,但是每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系。跟返回值无关。
方法的参数传递
基本类型:
方法的形参在内存中是变量,传递的是具体数值
实例:
public class Demo5Method {
public static void main(String[] args) {
int number=100;
System.out.println(number);
change(number);
System.out.println(number);
}
public static void change(int number)
{
number=200;
}
}
打印结果:
100
100
引用类型:
如果一个方法参数传递的引用数据类型,那么传递的是该引用数据类型所记录的内存地址
即实参和形参指向同一个内存地址
public class Demo6Method {
public static void main(String[] args) {
int[] arr = {10,20,30};
System.out.println(arr[1]);
change(arr);
System.out.println(arr[1]);
}
public static void change(int arr[])
{
arr[1]=10;
}
}
打印结果:
20
10
案例1:
设计一个方法用于数组遍历,要求遍历结果在一行,样例(11, 22, 33, 44, 55)。
import java.sql.SQLOutput;
public class Demo7Method {
public static void main(String[] args) {
int [] arr={11,22,33,44,55};
printArray(arr);
}
public static void printArray(int[] arr)
{
System.out.print("(");
for (int i = 0; i < arr.length ; i++) {
if(i== arr.length-1)
{
System.out.println(arr[i]+")");
}
else
{
System.out.print(arr[i]+", " );//不换行的输出语句
}
}
}
}
案例2:
用方法找出数组的 最大值和最小值
return只能返回一个结果。
import java.sql.SQLOutput;
public class Demo7Method {
public static void main(String[] args) {
int [] arr={3,22,4,33,6};
int [] maxAndmin=getMaxandMin(arr);
System.out.println(maxAndmin[0]);
System.out.println(maxAndmin[1]);
}
public static int[] getMaxandMin(int[] arr)
{
int max=arr[0];
int min=arr[0];
for (int i = 1; i < arr.length ; i++)
{
if (arr[i] > max)
{
max = arr[i];
}
}
for (int j = 1; j <arr.length; j++)
{
if(arr[j]<min)
{
min=arr[j];
}
}
int[] maxandmin={max,min};
return maxandmin;
}
}
打印结果:
33
3