Java函数的基本概念和语法结构。
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的阶乘。
递归函数是一种有限制的循环,它可能会影响性能和栈的大小。因此,在使用递归函数之前,应该仔细考虑它是否合适。
