欢迎访问宙启技术站
智能推送

Java函数的基本概念和语法结构。

发布时间:2023-06-07 21:30:10

Java是一种面向对象编程语言,其中函数是它的重要组成部分,也是程序的基本执行单元之一。本文将重点讲解Java函数的基本概念和语法结构。

一、Java函数的定义

Java函数也叫Java方法,定义如下:

修饰符 返回类型 方法名(参数列表){
    方法体
}

其中,修饰符可以省略;返回类型指明函数执行后将返回的结果的数据类型;方法名指函数的名称;参数列表指函数传入的参数,可以没有参数;方法体指函数具体要完成的操作。

二、Java函数的调用

Java函数可以通过函数名来调用,调用语法如下:

方法名(参数列表)

其中,参数列表可以根据函数定义的情况来传入相应的参数。例如,定义一个函数用于输出“Hello World!”:

public static void helloWorld(){
    System.out.println("Hello World!");
}

调用语法为:

helloWorld();

则在程序中调用该函数,就可以输出“Hello World!”。

三、Java函数参数的类型

Java函数的参数可以分为以下几种类型:

1.值传递参数

在Java中,所有的数据类型都是值传递类型。当一个参数是值传递类型时,函数的操作不会改变原来的参数,而是操作原来参数的一份副本。例如:

public static int sum(int a, int b){
    int c = a + b;
    return c;
}

在函数中,a和b分别是两个整数型参数,函数中任何对a和b的修改都不会影响到原来的变量。调用该函数时可以这样:

int result = sum(5, 6);

函数返回结果是11,但不会改变原来的参数值。

2.引用传递参数

引用传递参数指向引用或对象的指针被传递。在Java中,对象和数组是引用类型,它们的地址被传递给函数。当一个参数是引用传递类型时,函数的操作会改变原来的参数。

例如:

public static void changeName(Student stu, String newName){
    stu.name = newName; 
}
 
//Student类定义:
public class Student{
    public String name;
    public int age;
}

在函数中,我们传递了一个指向Student对象的引用和一个新的name值。在函数中,我们改变了name值,但是stu对象的引用在栈内存中,并不会改变。在调用该函数时可以这样:

Student stu = new Student();//创建对象
stu.name = "Lucy";//给对象属性赋值
changeName(stu, "Lily");//调用函数改变name的值
System.out.println(stu.name);//输出stu的name属性值

函数输出结果是“Lily”,stu对象的name属性被修改。

四、Java函数的返回值

Java函数除了完成一定的操作外,还可能会有返回值。返回值的类型可以是任何Java数据类型。

例如:

public static int sum(int num){
    int sum = 0;
    for(int i = 1; i <= num; i++){
        sum += i;
    }
    return sum;
}

该函数返回num整数的1到num之间所有整数的和。

在调用该函数时可以这样:

int result = sum(5);

函数的返回值是15。

注意,当函数定义时指定返回类型时,函数必须使用return语句返回该类型的值。例如:

public static int getMax(int a, int b){
    if(a > b)
        return a;
    else
        return b;
}

在调用该函数时可以这样:

int maxNum = getMax(5, 9);

函数返回值是9,即其中较大的数。

五、Java函数的重载

函数重载是指在同一个类中定义两个或两个以上的函数,它们拥有相同的名称,但参数类型或数量不同。

例如:

public static void print(int a){
    System.out.println(a);
}
 
public static void print(String a){
    System.out.println(a);
}
 
public static void print(double a){
    System.out.println(a);
}

这里,我们定义了三个名为print的函数,它们都有不同的参数类型,但函数名相同。在Java中,编译器会根据传入的参数自动判断调用哪个函数。

例如:

print(5);//调用      个函数
print(3.14);//调用第三个函数
print("Java");//调用第二个函数

六、Java内置函数

Java内部提供了一些常用函数,例如:

1. Math函数

Math类是Java内置的一个数学类,包含了很多常用的数学函数,例如:

double pi = Math.PI;//获取π值
double absNum = Math.abs(-4);//获取绝对值
double powNum = Math.pow(2, 3);//获取2的3次幂
double sqrtNum = Math.sqrt(9);//获取9的平方根
double randomNum = Math.random();//获取0-1之间的随机数

2. String函数

String类是Java内置的一个字符串类,包含了很多常用的字符串函数,例如:

String str = "Hello World";
int length = str.length();//获取字符串长度
String subStr = str.substring(3);//获取从索引为3处开始的子串
String subStr2 = str.substring(3, 7);//获取从索引为3到索引为6的子串
boolean contains = str.contains("Hello");//判断字符串是否包含子串
String replaceStr = str.replace("World", "Java");//将World替换为Java

七、Java递归函数

递归函数是指一个函数调用自己的函数。它通常用于解决那些通过逐个解决子问题来解决问题的情况。

例如:

public static int factorial(int n){
    if(n == 0 || n == 1)
        return 1;
    else
        return n * factorial(n-1);
}

在函数中,当n等于0或1时,函数返回1,否则函数调用本身并返回n*factorial(n-1)。

在调用该函数时可以这样:

int result = factorial(5);

函数返回值是120,即5的阶乘。

递归函数是一种有限制的循环,它可能会影响性能和栈的大小。因此,在使用递归函数之前,应该仔细考虑它是否合适。