/*
函数(方法):
函数的作用:提高功能代码的复用性。
需求:做两个数的加法功能
目前存在的问题:以下的代码都是在做一个加法功能,而
这里加法功能的代码目前是没有任何的复用性的。
解决方案:如果一个功能的代码被复用起来,那么这时候可以把这里的功能代码封装起来,
在java中把功能代码封装起来的是以函数的形式体现的。
函数定义的格式:
修饰符 返回值类型 函数名(形参列表){
需要被封装的功能代码;
return;
}
分析函数:
public static int add(){
int a = 2;
int b = 3;
return a+b;
}
修饰符:public static
返回值类型:int。 返回值类型就是指函数运行完毕后,返回的结果的数据类型。
注意:某些函数是没有结果返回给调用者的,那么这个时候返回值类型是void
函数名:add 函数名的作用:如果需要调用该函数,就需要使用该函数名
函数名的命名规范:首单词全部小写,其他单词的首字母大写,其他小写.
形式参数:如果一个函数在运行的时候,存在着数据是要调用者确定的,那么这时候就应该定义形式参数。
return: 把一个结果返回给调用者。
函数的特点:
1.函数定义好之后,是需要被调用才会被执行的。main函数是有jvm调用的,不需要我们手动调用。
在现实生活中,以前去银行取钱的时候,银行都会有专门的工作人员负责的,
但是银行发生取钱的步骤都是一致的,后来银行为了解决这个问题,就把取钱的功能封装到一个柜员机中,以后我们再取钱的时候
我们只需要调用柜员机的取钱功能即可。
*/
class Demo1
{
public static void main(String[] args)
{
/*int sum = add();//调用了函数
System.out.println("结果:"+sum);
int sum = add(1,2);//调用了函数
System.out.println("结果:"+sum);
*/
//int sum =add(1,2);//不兼容的类型: void无法转换为int
add(1,2);
}
//做加法功能的函数
/*
public static int add(){
int a = 2;
int b = 3;
System.out.println("函数执行了.....");
return a+b;
}
//加法功能的函数
public static int add(int a,int b){//int a,int b形式参数:形式参数的值是交给调用者确定的
return a+b;
}
需求:定义一个函数做加法功能,不需要返回结果给调用者,直接输出结果即可
*/
public static void add(int a,int b){
int sum=a+b;
System.out.println("结果:" + sum);
}
}
/*
函数定义的格式:
修饰符 返回值类型 函数名(形参列表){
需要被封装的功能代码;
return;
}
如何定义一个函数:
1.返回值类型,
2.是否存在未知参数(是否存在要由调用者确定的参数)。--->形式参数
需求1:定义一个函数判断一个分数的等级,把分数的等级返回给调用者。
需求2:定义一个函数打印一个乘法表,不需要返回任何数据
*/
class Demo2
{
public static void main(String[] args)
{
/*int max = getMax(14,5);//调用了函数 实际参数
System.out.println("最大值:" + max);
*/
getMax(3,7);
}
//需求2:定义一个函数比较两个int类型的数据大小,不需要把最大值返回给调用者。
public static void getMax(int a,int b){
int max=0;//定义一个变量用于保存最大值的
if (a>b){
max=a;
}else {
max=b;
}
System.out.println("最大值:"+ max);
}
// 需求1:定义一个函数比较两个int类型的数据大小,把最大值返回给调用者。
/*public static int getMax(int a,int b){
int max=0;//定义一个变量用于保存最大值的
if (a>b){
max=a;
}else {
max=b;
}
return max;//把结果返回给调用者
}
*/
}
/*
需求1:定义一个函数判断一个分数的等级,把分数的等级返回给调用者。
“A等级” “B等级”
如何定义一个函数:
1.返回值类型。String
2.未知的参数---->形式参数。 分数
需求2:定义一个函数打印一个乘法表,不需要返回任何数据。
1.返回值类型, void
2.未知参数-----> 形式参数 到底什么是乘法表
函数的特点:
1.函数的作用就是把一个功能代码块给封装起来,已达到提高功能代码的复用性。
2.函数定义好了之后是需要被调用者调用才会执行的。
3.如果一个函数没有返回值返回给调用者,那么返回值类型必须使用void 表示
*/
class Demo3
{
public static void main(String[] args)
{
/*
String result=getGrade(89);
System.out.println(result);
*/
print(3);
}
//需求2:定义一个函数打印一个乘法表,不需要返回任何数据。
public static void print(int row){
for (int i=1;i<=row ;i++ )
{
for (int j=1;j<=i ;j++ ){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println("");
}
}
//需求1:定义一个函数判断一个分数的等级,把分数的等级返回给调用者。
/*public static String getGrade(int score){
String grade="";//定义一个变量存储等级
if (score>=90&&score<=100){
grade="A等级";
}else if (score>=80&&score<=90){
grade="B等级";
}else if (score>=70&&score<=80){
grade="C等级";
}else if (score>=60&&score<=70){
grade="E等级";
}else if (score>=0&&score<=59){
grade="补考等级";
}
return grade;//把等级返回给调用者
}
*/
}
/*
函数:
函数的作用:为了提高功能代码的复用。
函数的定义格式:
修饰符 返回值类型 变量名(形式参数){
函数体
}
函数特点:
1.函数是把一个功能的代码封装起来已达到提高功能代码的复用性。
2.函数定义好之后,需要调用才能执行的。
3.如果一个函数没有返回值类型,那么就使用void关键字表示。
需求:定义一个函数判断分数对应的等级,然后返回分数对应的等级。
*/
class Demo1
{
public static void main(String[] args)
{
String result=getGrade(89);
System.out.println("对应的等级是:"+result);
}
public static String getGrade(int score){//未知的参数定义在形参中,由函数调用者确定
String grade="";//定义一个变量存储等级
if (score>=90&&score<=100){
grade="A等级";
}else if (score>=80&&score<=90){
grade="B等级";
}else if (score>=70&&score<=80){
grade="C等级";
}else if (score>=60&&score<=70){
grade="E等级";
}else if (score>=0&&score<=59){
grade="补考等级";
}
return grade;//把等级返回给调用者
}
}
/*
注意:如果一个函数的返回值类型是具体的数据类型,那么该函数就必须要保证在任意情况下都有返回值。(除了返回值类型是void以外的)
return关键字的作用:
1.返回数据给调用者。
2.函数一旦执行到了return关键字,那么函数马上结束。(能结束一个函数)
break关键字与return关键字的区别:
1.break关键字是结束一个循环
2.结束当前函数
*/
class Demo2
{
public static void main(String[] args)
{
//String result=getGrade(-10);
//System.out.println("对应的等级是:"+result);
//add(0,2);
print();
}
public static void print(){
for (int i = 0;i<5 ;i++ ){
System.out.println("hello word");
//break;结束了当前循环
return;//结束当前的函数
}
System.out.println("哈哈哈我能执行吗??");
}
//目前该函数的返回值类型是void,那么是否可以存在return关键字呢?
public static void add(int a,int b){
if (a==0)
{
return;//结束一个函数
}
System.out.println("总和:"+(a+b));
}
public static String getGrade(int score){//未知的参数定义在形参中,由函数调用者确定
if (score>=90&&score<=100){
return"A等级";
}else if (score>=80&&score<=90){
return"B等级";
}else if (score>=70&&score<=80){
return"C等级";
}else if (score>=60&&score<=70){
return"D等级";
}else if (score>=0&&score<=59){
return"E等级";
}else{
return"补考等级";
}
}
}
/*
需求:定义一个函数做加法功能。
函数的重载:在一个类中出现两个或两个以上的同名函数,这个称作为函数的重载。
函数的重载的作用,同一个函数名可以出现了不同的函数,以应对不同个数或者不同数据类型的参数
函数重载的要求:
1.函数名一致。
2.形参列表不一致(形式参数的个数或者是对应的数据类型不一致)
3.与函数的返回值类型是无关的。
*/
class Demo3
{
public static void main(String[] args)
{
add(1,2);
}
//这些函数都是在做加法运算。
public static void add(int a,int b){
System.out.println("两个参数的总和:"+(a+b));
}
//与函数的返回值类型无关。所以属于重复定义函数,不是函数重载
public static int add(int a,int b){
System.out.println("两个参数的总和:"+(a+b));
return a+b;
}
/*
//函数的重复定义
public static void add(int a,int b){
System.out.println("两个参数的总和:"+(a+b));
}
public static void add(int a,int b,int c){
System.out.println("三个参数的总和:"+(a+b+c));
}
public static void add(int a,int b,int c,int d){
System.out.println("四个参数的总和:"+(a+b+c+d));
}
*/
}