黑马程序员—Java基础—函数

原创 2015年11月20日 10:38:47

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

根据【阳哥笔记】学习Java语言基础知识

目录:一、函数的定义 二、函数的特点 三、函数的应用 四、函数的重载

一、函数的定义

         函数就是定义在类中的具有特定功能的一段独立小程序,函数也称为方法。

函数的格式:

          修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)

             {

                   执行语句;

                   return 返回值;

             }

返回值类型:函数运行后的结果的数据类型。

参数类型:是形式参数的数据类型。

形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。

实际参数:传递给形式参数的具体数值。

return:用于结束函数。

返回值:该函数运算后的结果,该结果会返回给调用者。

如下:

package com.itheima;

 

class Test{

   //定义一个加法函数

   //返回值类型:int参数类型:int形式参数:a,b

   public static int add(inta, intb){

   //return:用于结束函数  返回值:a+b

      return a + b;

      }

   public static void main(String[] args){

      //实际参数:3,4

       int c = add(3,4);

       System.out.println("c = " +c);

       }

   }

 

二、函数的特点

1、定义函数可以将功能代码进行封装。

2、便于对该功能进行复用。

3、函数只有被调用才会被执行。

4、函数的出现提高了代码的复用性。

P.S.

1、对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写,或者写上return;。

package com.itheima;

 

class Test{

   //定义一个myPrint()函数

   public static void myPrint(){

      System.out.println("hello world");

      //函数没有具体返回值,可省略不写或写上return

        return;

  }

   public static void main(String[] args){

      //对该功能复用

      myPrint();

       myPrint();

       }

}

 

2、函数中只能调用函数,不可以在函数内部定义函数。否则,编译时期就会报错。 

 

3、定义函数时,函数的结果应该返回给调用者,交由调用者处理。

三、函数的应用

两个明确:

明确要定义的功能最后的结果是什么?

明确在定义该功能的过程中,是否需要未知内容参与运算。

问题1:
    需求:定义一个功能,画一个矩形在控制台。
    思路:既然定义功能,就可以用函数来体现。
    明确一:这个功能结果是什么?没有结果,因为直接打印到了控制台,并未返回给调用者。用void表示。
    明确二:这个功能实现过程中是否需要未知内容参与运算?有,行和列不确定,两个,整数int类型。

package com.itheima;

 

class Test{

   //定义一个myPrint()函数

   public static void draw(intm,intn){

      for(inti = 0;i < m;i++){

         for(intj = 0;j < n;j++ ){

            System.out.print("*");

         }

         System.out.println();

      }

  }

   //打印一个长为3宽为4的矩形

   public static void main(String[] args){

      draw(3,4);

        }

}

问题2:

需求:定义功能,打印99乘法表。

思路:既然定义功能,就可以用函数来体现。
    明确一:这个功能结果是什么?没有结果,因为直接打印到了控制台,并未返回给调用者。用void表示。
    明确二:这个功能实现过程中是否需要未知内容参与运算?不需要

package com.itheima;

 

class Test{

   //定义一个myPrint()函数,实现99乘法表的功能

   public static void myPrint(){

      for(inti = 1;i <10 ;i++){

         for(intj = 1;j <= i;j++ ){

            //"\t"转义字符,也就是制表符

            System.out.print(j+"*"+i+"="+i*j+"\t");

         }

      System.out.println();

      }

  }

   public static void main(String[] args){

      myPrint();

        }

}

 

P.S.

返回值类型和参数类型没有直接关系。

四、函数的重载

重载的概念:

         在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。

重载的好处:

         方便于阅读,优化了程序设计。

如下:

package com.itheima;

 

class Test{

   //实现打印指定数字的乘法表

   public static void myPrint(intm){

      for(inti = 1;i <= m ;i++){

         for(intj = 1;j <= i;j++ ){

            //"\t"转义字符,也就是制表符

            System.out.print(j+"*"+i+"="+i*j+"\t");

         }

      System.out.println();

      }

  }

   //定义一个myPrint()函数,实现99乘法表的功能

   public static void myPrint(){

      for(inti = 1;i <10 ;i++){

         for(intj = 1;j <= i;j++ ){

            //"\t"转义字符,也就是制表符

            System.out.print(j+"*"+i+"="+i*j+"\t");

         }

      System.out.println();

      }

  }

   public static void main(String[] args){

      myPrint();

      myPrint(6);

        }

}

总结:

函数的功能一样,仅仅是参与运算的未知内容不同时,可以定义多函数,却使用统一函数名称,这样方便阅读。在调用时,虚拟机通过参数列表的不同来区分同名函数。

 

P.S.

1、重载与返回值类型无关,只看参数列表。

2、java是严谨性语言,如果函数调用出现不确定性,会编译失败。



//本章小技巧:eclipse中返回上一步操作使用 Ctrl+z 撤销操作。 

黑马程序员——Java基础---练习题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- Java基础---练习题 1.写出程序结果class Demo { public stat...
  • liu007004
  • liu007004
  • 2015年01月19日 16:35
  • 662

黑马程序员——Java基础测试题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 黑马程序员——Java基础测试题 第1题:以下代码哪个是正确的?为什么?   a. byte...
  • liu007004
  • liu007004
  • 2015年01月16日 12:49
  • 1372

黑马程序员_我的Linux基础整理笔记

Linux Linux文件目录和分区 文件目录: /:根目录 /root:存放root用户的相关文件 /home:存放普通用户的相关文件 /bin:存放普通用户的可执行命令 /sbin:...
  • zhengzhongjie1990
  • zhengzhongjie1990
  • 2014年07月05日 17:08
  • 1525

传智 刘意 2015年Java基础视频-深入浅出精华版 笔记 day24~day26(2016年4月26日13:11:30)

day24 1.多线程(JDK5之后的Lock锁的概述和使用)   Lock:           void lock(): 获取锁。           void unlock():释放锁。 ...
  • juliantem
  • juliantem
  • 2016年04月15日 00:40
  • 4935

黑马程序员----0704期java基础班心得

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 黑马程序员----0704期java基础班心得            对于任何一个刚接触ja...
  • DreamStartDemo
  • DreamStartDemo
  • 2015年07月28日 12:49
  • 388

黑马程序员_java多线程的一些总结(一)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、    进程和线程 1、   进程和线程的关系。 一般来说,我们运行一个应用程序的,就启动...
  • u011449569
  • u011449569
  • 2015年10月29日 00:23
  • 285

黑马程序员_HTML基础

a标签
  • u013168363
  • u013168363
  • 2013年12月29日 01:14
  • 445

黑马程序员学习笔记 Java的三大框架

如果做javaweb开发,spring是一定要学的,现在主流还是ssh,就是strurs+hibernate+spring,其中hibernate是持久层,用来持久化数据库操作的,如果不喜欢可以学点别...
  • Mr_April
  • Mr_April
  • 2015年07月03日 17:12
  • 1540

黑马程序员--一个为进入黑马云六的C++屌丝的28个日夜

首先我要告诉大家,我是一个在大学学了三年C++的人,可能你们会问我,学C++不是挺好的?干嘛突然间要重新学习java呢?况且C++以后的发展不也挺好吗?        我应该怎么回答你们呢?这也是我...
  • heima_hb5
  • heima_hb5
  • 2014年08月22日 08:52
  • 2404

关于我在黑马程序员培训毕业后的亲身体验

首先申明:我本人已经于2016年5月份在广州传智播客java培训完毕业,和黑马程序员官网没有任何的利益往来,也没有人出钱给我帮他们做软文推广,这是我在黑马程序员的亲身体验,不存在虚构。...
  • wjycgl
  • wjycgl
  • 2017年04月20日 15:27
  • 1656
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员—Java基础—函数
举报原因:
原因补充:

(最多只允许输入30个字)