java基础要点(2)函数

来源:互联网 发布:数据分析部门组织架构 编辑:程序博客网 时间:2024/05/16 12:16


 为了提高代码的复用性,对代码进行抽取
 将这个部分定义成一个独立的功能,方便日后使用
 java中对功能的定义是通过函数的形式来体现的。
 1、先明确函数定义的格式
 
 修饰符  返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2)
 {
  执行语句;
  return 返回值;
 }

 当函数运算后,没有具体的返回值时,这是返回值类型用一个特殊的关键字来标识。

class FunctionDemo{public static void main(String[] args){System.out.println(getResult(5));getResult1(5);}static int getResult(int x){return x*5+3;}static void getResult1(int x){System.out.println("x*5+3="+(x*5+3));return;//可以省略}}class FunctionDemo2{public static void main(String[] args){int sum=getSum(12,23);System.out.println("sum="+sum);}

  

 如何定义一个函数呢?
 1、既然函数是一个独立的功能,那么该功能的运算结果是什么先明确
  因为这是在明确函数的返回值类型。
 2、再明确在定义该功能的过程中是否需要未知的内容参与运算。
  因为是在明确函数的参数列表(参数的类型和个数)。

需求:定义一个功能,完成3+2的运算,并将结果返回给调用者。
 1、明确功能的结果:是一个整数的和。
 2、在实现该功能的过程中是否有未知内容参与运算,没有。
 其实这两个功能就是在明确函数的定义。
 1、是在明确函数的返回值类型
 2、明确函数的参数列表(参数的类型和参数的个数)
 
 public static int getSum()
 {
  return 3+2;
 }

 以上这个函数的功能,结果是固定的,毫无扩展性而言。
 为了方便用户需求,由用户来制定加数和被加数,这样,功能才有意义。
 思路:
 1、功能结果是一个和,返回值类型是int
 2、有未知内容参与运算,有两个
  这两个未知内容的类型都是int 

public static int getSum(int x,int y){return x+y;}

 需求:判断两个数是否相同
 思路:
 1、明确功能的结果:结果是:boolean
 2、功能是否有未知内容参与运算
  有,两个整数

public static boolean compare(int a,int b){ /*if (a==b) { return true; } else return false;*/// return (a==b)?true:false;return a==b;}}class FunctionTest{public static void main(String[] args){draw(5,9);print99(9);}

需求:定义一个功能,用于打印矩形

public static void draw(int row,int col){for (int x=0;x<row;x++ ){for (int y=0;y<col ;y++ ){System.out.print("*");}System.out.println();}}public static void print99(int x){for (int a=1;a<=x ;a++ ){for (int b=1;b<=a ;b++ ){System.out.print(b+"*"+a+"="+(b*a)+"\t");}System.out.println();}}}

什么时候用重载?
当定义的功能相同,但参与运算的未知内容不同,
那么,这时就定义一个函数名称以表示其功能,方便阅读,而通过参数列表的不同来区分多个同名函数。

class FunctionOverload{public static void main(String[] args){add(1,5);add(32,23,5);}public static void add(int x,int y){System.out.println(x+"+"+y+"="+(x+y));}public static void add(int x,int y ,int z){System.out.println(x+"+"+y+"+"+z+"="+(x+y+z));}}

void show(int a,char b,double c){}//看下面函数是否与该函数重载

a、void show(int x,char y,double z){}//没有,因为和原函数一样

b、int show(int a,double c,char b){}//重载,因为参数类型不同。注意:参数类型的顺序不一样,重载和返回值类型没关系

c、boolean show (int c,char b){}//重载,因为参数个数不同

e、double show(int x,char y,double z)//没有重载,这个函数不可以和给定函数同时存在同一个类中。

 

需求:已知学生成绩以100分为满分,共分5个等级:A,B,C,D,E.
90~100为等级A,80~89为等级B,70~79为等级C,
60~69为等级D,0~59为等级E。
要求定义一个成绩变量,当成绩变化时,可直接知道该成绩对应的等级。
例如:当成绩为100时,该学生的等级时A。

class Demo1{public static void main(String[] args){char ch=getLevel(99);System.out.println("level="+ch);}public static char getLevel(int num){char level;if(num>=90 && num<=100)level = 'A';else if(num>=80 && num<=89)level = 'B';else if(num>=70 && num<=79)level = 'C';else if(num>=60 && num<=69)level = 'D';elselevel = 'E';return level;}}class Demo2{public static void main(String[] args){show(0);//15show(1);//14}public static void show(int i){switch(i){default:i+=2;case 1:i+=1;case 4:i+=8;case 2:i+=4;}System.out.println("i="+i);}}
原创粉丝点击