20130331java语言基础笔记函数

1.函数的定义:函数就是定义在类中的具有特定功能的一段独立的小程序;函数也称为方法;
2.函数的格式实例和讲解:
class FunctionDemo
{
    public static void main(String[] args)
    {
        int c = add(3,4);
        System.out.println("c="+c);
    }
    /*函数的格式(返回值类型和参数类型没有直接关系):
    修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,……)
    {
        执行语句;
        return返回值;
    }
    返回值类型:函数运行后的结果的数据类型;
    参数类型:是形式参数的数据类型;
    形式参数:是一个量变,用于存储调用函数时传递给函数的实际参数;
    实际参数:传递给参数的具体数值;
    return:用于结束函数;
    返回值:该函数运算后的结果,该结果会返回给调用者;
    */
    public static int add(int a,int b)
    {
        return a+b;
        /*
        int sum = a+b;
        return sum;
        */
    }
    /*
    特殊情况:
    功能没有具体的返回值;
    这时return的后面直接用分号结束;
    返回值类型怎么体现呢?因为没有具体值,所以不可以写具体的数据类型;
    在java中只能用一个关键字来表示这种情况,关键字是:void;
    总结:没有具体返回值时,返回值类型用void来表示;
    注意:如果返回值类型是void,那么函数中的return语句可以省略不写;
    public static void add(int a,int b)
    {
        System.out.println(a+b);
    }
    */
}
3.函数的特点:
  定义函数可以将功能代码进行封装;
  便于对该功能进行复用;
  函数只有被调用才会被执行;
  函数的出现提高了代码的复用性;
  对于函数没有返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写;
  注意:函数中只能调用函数,不可以在函数内部定义函数;
  定义函数时,函数的结果应该返回给调用者,交由调用者处理;
class functionDemo1()
{
    public static void main(String[] args)
    {
        /*myPrint函数是在main函数内部定义函数,编译将不通过;
        public static void myPrint()
        {
            System.out.println("Hello World);
        }
        myPrint();
        */
    }
}
class FunctionDemo2
{
    public static void main(String[] args)
    {
        System.out.println(add(3,4));
        //add(3,4);
        //int c = add(3,4);
        //System.out.println("c="+c);
    }
    public static int add(int a,int b)
        {
            return a+b;
        }
    /*函数的结果应该返回给调用者,交由调用者处理,所以定义加法功能以下定义虽然可以但并不合理,这是初学者定义函数的误区;
    public static void add(int a,int b)
    {
        System.out.println(a+b);
    }
    */
}
4.函数练习1:
class FunctionDemo
{
    public static void main(String[] args)
    {
        draw(8,4);
        boolean result = equals(1,2);
        System.out.println(result);
        int max = getMax(8,5);
        System.out.println(max);
    }
    /*
    需求1:定义一个功能,画出一个矩形在控制台;
    明确一:这个功能的结果是什么?
        没有结果,因为直接打印到了控制台,并未返回给调用者,用void;
    明确二:这个功能实现过程中是否需要未知内容参与运算?
        有,行和列不确定,两个,整数int;
    */
    public static void draw(int row,int col)
    {
        for(int x=1; x<=row; x++)
        {
            for(int y=1; y<=col; y++)
            {
                System.out.print("*");
            }
            System.out.println();
        }
    }
    /*
     需求2:定义一个功能,比较两个数是否相等;
     明确一;这个功能的结果是什么?
        有,boolean;
     明确二:这个功能实现过程中是否需要为之内容参与运算?
        有,两个整数;
    */
    public static boolean equals(int a,int b)
    {
        /*方法一;
        if(a==b)
            return true;
        else//else可以省略;
            return false;
        */
        /* 方法二:
        return (a==b)?true:false;
        */
        /*方法三;
        boolean x;
        if(a==b)
            x = true;
        else
            x = false;
        */
        //方法四:
        return a==b;
    }
    /*
     需求3:定义一个功能,获取两个整数中较大的那个数;
     明确一;这个功能的结果是什么?
        有,其中一个数,int;
     明确二:这个功能实现过程中是否需要为之内容参与运算?
        有,两个整数;
    */    
    public static int getMax(int a,int b)
    {
        /*
        if(a>b)
            return a;
        else
            return b;
        */
        return a>b?a:b;
    }
}
5.函数练习2:
public class FunctionDemo
{
    public static void main(String[] args)
    {
        print99();
        char c = getLevel(87);
        System.out.println(c);
    }
    /*
    定义一个功能,打印99乘法表;
    */
    public static void print99()
    {
        for(int x=1; x<=9; x++)
        {
            for(int y=1; y<=x; y++)
            {
                System.out.print(y+"*"+x+"="+y*x+"\t");
            }
            System.out.println();
        }
    }
    /*
    根据考试成绩获取学生分数对应的等级;
    90~100    A
    80~89    B
    70~79    C
    60~69    D
    60以下    E
    */
    public static char getLevel(int num)
    {
        /*
        if(num>=90 && num<=100)
            return 'A';
        if(num>=80 && num<=89)//这里else可以不用,因为匹配上一条后有return结束函数就不会往下执行了;
            return 'B';
        */
        char level;
        if(num>=90 && num<=100)
            level = 'A';
        else if(num>=80 && num<=89)//此处要用if的第三种格式,即要用else,因为不用else的话匹配上条后还会继续往下判断影响性能;
            level = 'B';
        else if(num>=70 && num<=79)
            level = 'C';
        else if(num>=60 && num<=69)
            level = 'D';
        else
            level = 'E';
        return level;
    }
}
6.函数的重载(overload)与重载练习:
重载的概念:在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可;
重载的特点:与返回值类型无关,只看参数列表;
重载的好处:方便于阅读,优化了程序设计;
重载示例:
class FunctionDemo
{
    public static void main(String[] args)
    {
        int x = add(3,4,8);
        System.out.println(x);
        printCFB(6);
        printCFB();
    }
    /*
    函数的重载:
    1.同一个类;
    2.同名;
    3.参数个数不同,or 参数类型不同;
    4.函数的重载和返回值类型无关;
    5.java是严谨性语言,如果函数出现的调用的不确定性,会编译失败;
    */
    //加法运算,两个整数的和
    public static int add(int a,int b)
    {
        return a+b;
    }
    //加法运算,两个小数的和
    public static double add(double a,double b)
    {
        return a+b;
    }
    //加法运算,三个整数的和
    public static int add(int a,int b,int c)
    {
        /*方法一
        return a+b+c;
        */
        //方法二
        return add(a,b)+c;
    }
    /*
    打印乘法表
    */
    public static void printCFB(int num)
    {
        for(int x=1;x<=num;x++)
        {
            for(int y=1;y<=x;y++)
            {
                System.out.print(y+"*"+x+"="+y*x+"\t");
            }
            System.out.println();
        }
    }
    /*打印标准乘法表*/
    public static void printCFB()
    {
        printCFB(9);
    }
    /*
    public static void printCFB()
    {
        for(int x=1;x<=9;x++)
        {
            for(int y=1;y<=x;y++)
            {
                System.out.print(y+"*"+x+"="+y*x+"\t");
            }
            System.out.println();
        }
    }
    */
}

原文地址:https://www.cnblogs.com/lisu/p/2997897.html