Java语法基础之函数的使用说明

函数
四个方面:
函数的定义
函数的特点
函数的应用
函数的重载

一、函数的定义及特点
1) 什么是函数?
函数就是定义在类中的具有特定功能的一段独立小程序,函数也称为方法
2)Java中函数的格式:
修饰符 返回值类型函数名(参数类型 形式参数1,参数类型 形式参数2,。。)
{  执行语句;
 return 返回值;

返回值类型:函数运行后的结果的数据类型
参数类型:是形式参数的数据类型
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数
实际参数:传递给形式参数的具体数值
return:用于结束函数
返回值:该值会返回给调用者
3) 函数的特点
a) 定义函数可以将功能代码进行封装
b) 便于对该功能进行复用
c) 函数只有被调用才会被执行
d) 函数的出现提高了代码的复用性
e) 对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写,系统会帮你自动加上。
注:
a) 函数中只能调用函数,不可以在函数内部定义函数。
b) 定义函数时,函数的结果应该返回给调用者,交由调用者处理。
c) 当函数运算后,没有具体的返回值时,这是返回值类型用一个特殊的关键字来标识该关键字就是void,void:代表的是函数没有具体返回值的情况。
d)  当函数的返回值类型是void时,函数中的return语句可以省略不写。
4)  如何定义一个函数?
    函数其实就是一个功能,定义函数就是实现功能,通过两个明确来完成:
       1)、明确该功能的运算完的结果,其实是在明确这个函数的返回值类型。
       2)、在实现该功能的过程中是否有未知内容参与了运算,其实就是在明确这个函数的参数列表(参数类型&参数个数)。
5) 函数的作用:
1)、用于定义功能。
2)、用于封装代码提高代码的复用性。
注意:函数中只能调用函数,不能定义函数。
6) 主函数:
    1)、保证该类的独立运行。
    2)、因为它是程序的入口。
    3)、因为它在被jvm调用。
7) 函数定义名称是为什么呢?
答:1)、为了对该功能进行标示,方便于调用。
    2)、为了通过名称就可以明确函数的功能,为了增加代码的阅读性。

二、函数的应用
1)  两个明确
a)  明确要定义的功能最后的结果是什么?
b)  明确在定义该功能的过程中,是否需要未知内容参与运算
2)  示例:
举例1:


代码如下:

class FunctionDemo
{
 public static void main(String[] args)
 {
  int x = 4;
  System.out.println(x*3+5);
  x = 6;
  System.out.println(x*3+5);
  int y = 4*3+5;
  int z = 6*3+5;
        System.out.println(y);
        System.out.println(z);
 }
}

发现以上的运算,因为获取不同数据的运算结果,代码出现了重复。
为了提高代码的复用性。对代码进行抽取。将这个部分定义成一个独立的功能。方便与日后使用。
java中对功能的定义是通过函数的形式来体现的。
明确功能:需要定义功能,完成一个整数的*3+5的运算,

1,先明确函数定义的格式。
    /*
    修饰符返回值类型函数名(参数类型形式参数1,参数类型形式参数2,)
    {
           执行语句;
           return 返回值;
    }


代码如下:

class FunctionDemo
{
 public static void getResult(int num)
 {
  System.out.println(num * 3 + 5);
  return;//可以省略
 }
public static void main(String[] args)
 {
  getResult(5);
 }
}

对上述关于return是否省略这一小小知识点的总结:
当函数运算后,没有具体的返回值时,这是返回值类型用一个特殊的关键字来标识。
该关键字就是void。void:代表的是函数没有具体返回值的情况。
当函数的返回值类型是void时,函数中的return语句可以省略不写。

举例2:


代码如下:

class FunctionDemo2
{
 public static void main(String[] args)
 {
  int sum = getSum(4,6);
  System.out.println("sum="+sum);
  sum = getSum(2,7);
  System.out.println("sum="+sum);
 }

/*下面的这个功能定义思想有问题,为什么呢?因为只为完成加法运算,至于是否要对和进行打印操作,
 那是调用者的事,不要在该功能中完成。*/
 public static void get(int a,int b)
 {
  System.out.println(a+b);
  return ;
 }
}

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


代码如下:

class FunctionDemo2
{
 public static void main(String[] args)
 {
/*
  int sum = getSum(4,6);
  System.out.println("sum="+sum);
  sum = getSum(2,7);
  System.out.println("sum="+sum);
  */
  //get(4,5);
  int x = getSum(4,4);
  int y = getSum(7,9);
  int num = getMax(x,y);
 }
 //需求:定义一个功能。完成3+4的运算。并将结果返回给调用者。
 /*
 1,明确功能的结果:是一个整数的和。
 2,在实现该功能的过程中是否有未知内容参与运算,没有。
 其实这两个功能就是在明确函数的定义。
 1,是在明确函数的返回值类型。
 2,明确函数的参数列表( 参数的类型和参数的个数)。
 */

public static int getSum()
 {
  return 3+4;
 }

/*
 以上这个函数的功能,结果是固定的,毫无扩展性而言。
 为了方便用户需求。由用户来指定加数和被加数。这样,功能才有意义。
 思路:
 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;
 }
 /*
 需求:定义功能,对两个数进行比较。获取较大的数。
 */
 public static int getMax(int a,int b)
 {
  /*
  if(a>b)
   return a;
  else
   return b;
   //或者用下面的三元运算符
   */
  return (a>b)?a:b;
 }
}

3)   练习:
1,定义一个功能,用于打印矩形。
2,定义一个打印99乘法表功能的函数。


代码如下:

class  FunctionTest
{
 public static void main(String[] args)
 {
draw(5,6);
  printHr();
  draw(7,9);
  printHr();
  print99();
 }
 /*
 定义一个功能,用于打印矩形。
 思路:
 1,确定结果:没有,因为直接打印。所以返回值类型是void
 2,有未知内容吗?有,两个,因为矩形的行和列不确定。
 */
 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 printHr()
 {
  System.out.println("------------------------------");
 }
 /*
 定义一个打印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();
  }
 }
}

三、函数的重载(overload)
重载的概念:
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
重载的特点:
与返回值类型无关,只看参数列表。
重载的好处:
方便于阅读,优化了程序设计。
重载示例:
返回两个整数的和
int add(int x,int y){return x+y;}
返回三个整数的和
int add(int x,int y, int z){return x+y+z;}
返回两个小数的和
double add(double x,double y){return x+y;}
什么时候用重载?
当定义的功能相同,但参与运算的未知内容不同。
那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
重载范例:


代码如下:

class FunctionOverload
{
 public static void main(String[] args)
 {
  add(4,5);
  add(4,5,6);
  print99();
 }
 public static void print99(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();
  }
 }
 //打印99乘法表
 public static void print99()
 {
  print99(9);
 }
 //定义一个加法运算,获取两个整数的和。
 public static int add(int x,int y)
 {
  return x+y;
 }
 //定义一个加法,获取三个整数的和。
 public static int add(int x,int y,int z)
 {
  return add(x,y)+z;
 }
}

练习:区分是否是重载


代码如下:

void show(int a,char b,double c){}
下面的a,b,c,d,e,f与上述一句的区别:
a.
void show(int x,char y,double z){}//没有,因为和原函数一样。
b.
int show(int a,double c,char b){}//重载,因为参数类型不同。注意:重载和返回值类型没关系。
c.
void show(int a,double c,char b){}//重载,因为参数类型不同。注意:重载和返回值类型没关系。
d.
boolean show(int c,char b){}//重载了,因为参数个数不同。
e.
void show(double c){}//重载了,因为参数个数不同。
f.
double show(int x,char y,double z){}//没有,这个函数不可以和给定函数同时存在与一个类中。

如何区分重载:当函数同名时,只看参数列表。和返回值类型没关系。

(0)

相关推荐

  • Java中绝对值函数的介绍与其妙用

    一.绝对值函数使用说明 绝对值函数是JDK中Math.java中的实现方法,其用来得到表达式的绝对值. 其实现非常简单,源码如下: /** * Returns the absolute value of an {@code int} value. * If the argument is not negative, the argument is returned. * If the argument is negative, the negation of the argument is re

  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析

    c++虚函数1.定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数 [1]2.语法:virtual 函数返回类型 函数名(参数表) { 函数体 }3.用途:实现多态性,通过指向派生类的基类指针,访问派生类中同名覆盖成员函数,也就是允许子类override父类同名方法.虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函数后,可以在基类的派生类中对虚函数重新定义,在派生类中重新定义的函数应与虚函数具有相同的形参个数和形参类型(也

  • java构造函数示例(构造方法)

    TestCar.java 复制代码 代码如下: public class TestCar {    public static void main(String[] args) {        Car c1 = new Car();        c1.color = "red";        c1.brand = "xxx";//如果这辆汽车有很多属性,这样一一赋值不是很麻烦?有没有办法一生产出来就设定它的属性(初始化)吗?有~~~看下面          

  • JAVA中字符串函数subString的用法小结

    String str;str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str: str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex结束时的字符串,并将其赋值给str; demo: 复制代码 代码如下: class Test { public static void main(String[] args)

  • Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API

    复制代码 代码如下: /** * Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API. <br> * 1.不得使用任何API,如Math.abs()等.<br> * 2.不得使用判断语句,如if.for.while.switch.?:等.<br> * 3.不得使用比较语句,如:==. <=.>=.!=. <.>等. <br> * * @author JAVA世纪网(java2000.net, laozizhu.com)

  • java 字符串匹配函数

    去掉字符串中匹配 的字符串 复制代码 代码如下: /** * 去掉字符串中匹配 的字符串 * * @author zhujie * @return String regex 要替换的内容 value 字符串 state 替换的内容变成什么 */ public static String toRegex(String regex, String value, String state) { Pattern p = Pattern.compile(regex); Matcher m = p.matc

  • java正则表达式验证函数

    复制代码 代码如下: /** * 验证 正则表达式 * * @author zhujie regex 正则表达式 value 所属字符串 * @return boolean */ public static boolean regex(String regex, String value) { Pattern p = Pattern.compile(regex); Matcher m = p.matcher(value); return m.find(); }

  • java jni调用c函数实例分享(java调用c函数)

    从C/C++到Java,再从Java回到C/C++,今天终于有机会了解了连接Java.C/C++的桥梁--JNI.哈哈!分享一下! 一.简介JNI是Java native interface的简写,可以译作Java原生接口.Java可以通过JNI调用C/C++的库,这对于那些对性能要求比较高的Java程序或者Java无法处理的任务无疑是一个很好的方式. 二.目的:Java代码中调用C/C++代码三.实现:假设我们的Java程序为J2C.java, C程序为J2C.c, Java与C之间的通信函数

  • Java语法基础之函数的使用说明

    函数四个方面:函数的定义函数的特点函数的应用函数的重载 一.函数的定义及特点1) 什么是函数?函数就是定义在类中的具有特定功能的一段独立小程序,函数也称为方法2)Java中函数的格式:修饰符 返回值类型函数名(参数类型 形式参数1,参数类型 形式参数2,..){  执行语句; return 返回值:}返回值类型:函数运行后的结果的数据类型参数类型:是形式参数的数据类型形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数实际参数:传递给形式参数的具体数值return:用于结束函数返回值:该

  • Java语法基础之选择结构的if语句、switch语句详解

    [前言] 流程控制语句: 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能. 流程控制语句分类: 顺序结构选择结构:if语句.switch语句循环结构:while语句.for语句 一.顺序结构: 是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的. 总的来说:写在前面的

  • Java语法基础之for语句练习

    控制语句--for练习语句的嵌套应用累加求和,计数器循环嵌套一.语句的嵌套应用语句嵌套形式.其实就是语句中还有语句.形式多种多样,没有固定的格式和套路.1.打印偶数for(int x=1;x<=10;x++){  if(x%2==1)continue; System.out.prinln("x="+x);}二.累加求和,计数器1.获取1~10的和,并打印.思路://1,定义变量用于存储不断变化的和.       int sum = 0;       //2,定义变量,记录住不断变

  • Java语法基础之运算符学习笔记分享

    一.运算符 运算符包括下面几种: 算术运算符赋值运算符比较运算符逻辑运算符位运算符三目运算符 最不常用的是位运算符,但也是最接近计算机底层的. 1.算术运算符 (1)+的几种用法:加法.正数.字符串连接符 (2)除法的时候要注意一个问题:整数相除,只能得到整数.要想得到小数,可以将数据自身*1.0,即将数据自身先转换为浮点型. 2.赋值运算符 符号 = += -= *= /= %= 注:=为基本的赋值运算符,其他的为扩展的赋值运算符 面试题: (1)short s=1, s = s+1; (2)

  • Java语法基础之循环结构语句详解

    一.循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环. 循环语句的组成: 初始化语句:一条或者多条语句,这些语句完成一些初始化操作. 判断条件语句:这是一个boolean 表达式,这个表达式能决定是否执行循环体. 循环体语句:这个部分是循环体语句,也就是我们要多次做的事情. 控制条件语句:这个部分在一次循环体结束后,下一次

  • java并发JUC工具包AtomicInteger原子整型语法基础

    目录 1.AtomicInteger基础用法 2.什么时候需要使用AtomicInteger 2.1.原子计数器场景 2.2.数值比对及交换操作 3.总结 AtomicInteger 类底层存储一个int值,并提供方法对该int值进行原子操作.AtomicInteger 作为java.util.concurrent.atomic包的一部分,从Java 1.5开始引入. 1. AtomicInteger基础用法 通过下文的AtomicInteger构造方法,可以创建一个AtomicInteger对

  • javascript 语法基础 想学习js的朋友可以看看

    1:javascript区分大小写 2:javascript每一条语句必须以";"结束,与C语言一样 3:输出:document.write("字符串")--->还可以输出对应的html标记 4:改变窗体的颜色document.bgColor="red"; 4:类型转换:parseInt,parseFloat 5:随机函数:parseInt(Math.random()*90+10) 产生10--100的随机数 5:弹出对话框:alert(&

  • Java异常基础知识解析

    Java程序运行的非正常现象叫做运行错误,根据其性质可分为两类:错误(Error)和异常(Exception); 他们有一个共同的父类(也是所有异常的顶级父类):Throwable. 异常类结构 Error Error(错误)由JVM生成并抛弃不做处理:此类错误通常与代码和执行的操作无关,是虚拟机中出现了比较严重的问题,程序本身无法解决(常见的错误有死循环.内存泄漏等). 一个常见的错误为Java虚拟机错误(VirtualMachineError),当JVM不再有继续执行操作所需的内存资源时,将

  • java语法糖之jdk迭代的新特性汇总

    语法糖(Syntactic sugar) 是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用.通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会. 糖1:for-each 功能和传统的fori相似 代码样例 public class Test { public static void main(String[] args) { int[] num = new in

  • Java语法之 Java 的多态、抽象类和接口

    目录 一.多态 1. 向上转型 2. 动态绑定 3. 方法重写 4. 向下转型 5. 关键字 super 6. 在构造方法中调用重写方法(坑) 7. 理解多态 8. 小结 二.抽象类 1. 概念 2. 注意事项 3. 抽象类的意义 3. 抽象类的作用 三.接口 1. 语法规则 2. 实现多个接口 3. 接口的继承 4. Comparable 接口 4. Comparator 接口 5. Cloneable 接口和深拷贝 上一篇文章:Java 基础语法之解析 Java 的包和继承 今天这章主要介绍

随机推荐