什么是函数(方法)
定义在类中的具有特定功能的一段独立的小程序。
方法是完成某个功能的代码。
方法的格式:
修饰符 返回值类型 函数名(参数类型 参数名1, 参数类型 参数名2,……)
{
执行语句;
return 返回值;
}
格式详细解释:
1 / 修饰符:目前就用 public static
2 / 返回值类型:功能结果的数据类型
3 / 方法名:第一个单词首字母小写,第二个单词后首字母大写。
4 / 参数类型:参数的数据类型。
5 / 参数:1 / 实际参数 2/ 形式参数 :就是方法定义上的,用于接收实际参数的。
**参数有顺序。
6 / 方法体语句:完成功能的代码
7 / return : 结束方法
8 / 返回值: 就是功能的结果,由return带给调用者
写好一个方法,必须明确两个:
A:返回值类型
B:参数列表,以及每个参数的数据类型
方法的调用:
1 / 方式1:单独调用(有明确返回值的方法,这种调用无意义) void类型方法 无明确返回值的可用此调用方式 方法名(参数1,参数2....);
2 / 方式2:输出调用(直接输出了,有可能我们还需要返回结果进一步操作)
3 / 赋值调用 (常用方法) 有返回值的方法调用
int result = sum(x,y);
// 返回值类型是什么,就用什么类型变量来调用
范例:
class FunctionDemo_01
{
public static void main(String[] args)
{
int x = 10;
int y = 20;
//赋值调用
int result = sum(x,y); //调用方法返回值是什么类型,就用什么类型的变量来调用
System.out.println(result);
}
public static int sum(int a, int b)
{
int c = a + b;
return c;
}
}
求两个数中较大值
/*
键盘录入两个数据,返回两个数中较大值
*/
import java.util.Scanner; //导入键盘输入包
class MethodTest_01
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("输入第一个数据");
int a = sc.nextInt();
System.out.println("输入第二个数据");
int b = sc.nextInt();
int result = getMax(a,b);
System.out.println("较大值是"+result);
}
public static int getMax(int a,int b)
{
int c =((a>b)?a:b); //三元运算符找出大的数值
return c;
}
}
练习02:
比较两个数是否相等
/*
比较两个数是否相等。
分析:比较相等,返回的是boolean类型的值
*/
import java.util.Scanner;
class MethodTest_02
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("输入第一个数");
int a = sc.nextInt();
System.out.println("输入第二个数");
int b = sc.nextInt();
boolean result = equal(a,b);
System.out.println("这两个数"+result);
}
public static boolean equal(int a,int b) //是否相等,返回boolean类型
{
if (a==b) //如果相等,返回true,否则返回false
{
return true;
}
else
{
return false;
}
}
}
练习03:
键盘录入三个数据,返回三个中最大的值
/*
键盘录入三个数据,返回三个中最大的值
分析:先比较两个,然后拿两个中较大的值和第三个进行比较,得出最大值
*/
import java.util.Scanner;
class MethodTest_03
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("输入第一个数");
int a = sc.nextInt();
System.out.println("输入第二个数");
int b = sc.nextInt();
System.out.println("输入第三个数");
int c = sc.nextInt();
int result = getMax(a,b,c);
System.out.println("最大的数是"+result);
}
public static int getMax(int a, int b, int c)
{
int temp =((a>b)?a:b); //先比较两个数字,
int max =((temp>c)?temp:c); //拿两个数字中较大的和第三个数字比较
return max; //返回最大值
}
}
方法的注意事项:
1 / 方法与方法是平级关系,不能嵌套定义。
2 / 方法调用的时候不用再传递数据类型
3 / 如果方法有明确的返回值,一定要用return带回一个返回值
练习04:
输出如下形状:
*****
*****
*****
*****
void 的类型的返回值的调用:(单独调用) 方法名(参数1,参数2,......);
/*
输出如下图形:
*****
*****
*****
*****
分析:用forfor嵌套可输出这个图形,用两个int变量来控制横向和纵向
void 方法的调用 要用到 《单独调用》
*/
class MethodTest_04
{
public static void main(String[] args)
{
graphics(10,8);
}
public static void graphics(int m, int n)
{
for (int x=0;x<m ;x++ )
{
for (int y=0;y<n ;y++ )
{
System.out.print("*");
}
System.out.println();
}
}
}
练习05:
键盘录入行数和列数,输出对应星型
void 的类型的返回值的调用:(单独调用) 方法名(参数1,参数2,......);
/*
键盘输入行数和列数,输出对应星形
分析:输出星形用forfor循环嵌套
*/
import java.util.Scanner;
class MethodTest_05
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("输入行数");
int m = sc.nextInt();
System.out.println("输入列数");
int n = sc.nextInt();
graphics(m,n); //void 返回类型的方法调用,用<单独调用>
}
public static void graphics(int m, int n)
{
for (int x=0;x<m ;x++ )
{
for (int y=0;y<n ;y++ )
{
System.out.print("*");
}
System.out.println();
}
}
}
练习06:
键盘输入一个1~9之间的数据,并输出对应的乘法表
/*
键盘录入n,(1<=n<=9),输出对应的nn乘法表
分析:用forfor循环嵌套输出九九乘法表的思路
*/
import java.util.Scanner;
class MethodTest_06
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字");
int z = sc.nextInt();
if (1<=z && z<=9) //判断输入的数字是否在1~9之间的数
{
nn(z);
}
else
{
System.out.println("输入正确九九乘法表数字");
}
}
public static void nn(int z) //九九乘法表方法
{
for (int x=1;x<=z ;x++ )
{
for (int y=1;y<=x ;y++ )
{
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
}
——————————————————————————————————————————————————————————
方法的重载:
1/同一个类
2/同名
3/参数个数 or 参数类型 不同
4/函数的重载和返回值类型无关,只看方法名和参数列表。
/*
定义一个两位整数的和的函数。
定义一个两个小数的和的函数。
定义了一个三位整数的和的函数。
*/
class FunctionDemo2
{
public static void main(String[] args)
{
int q=sum(4,6);
double p=sum(2.23,1.08);
int r=sum(6,2,8);
System.out.println(q);
System.out.println(p);
System.out.println(r);
}
public static int sum(int a,int b) //这个函数名为sum
{
int s=a+b;
return s;
}
public static double sum(double a,double b) //这个函数名被sum.与上一个函数名相同,但是参数类型不同。
{
double s=a+b;
return s;
}
public static int sum(int a,int b,int c) //这个函数名被sum.与第一个函数名和参数类型相同,但是参数个数不同。
{
int s=a+b+c;
return s;
}
}