UM2L7——函数

函数

Java 中函数的使用和 C# 基本一致,区别主要是:

  1. Java 中没有 ref​ 和 out​ 关键字
  2. Java 中可变参数写法有些许不同,用…表示可变参数
  3. Java 中函数参数没有默认参数的用法,即不能为参数添加默认值
  4. Java 中函数的命名方式 用的是驼峰命名法

Java 中的函数和 C# 对比

Java 中函数和 C# 中函数的使用基本一致函数的声明、重载、使用等就按照 C# 中的基础规则使用即可
主要区别如下:

  1. Java 中没有 ref​ 和 out​ 关键字
  2. Java 中可变参数写法有些许不同
  3. Java 中函数参数没有默认参数用法,即不能为参数添加默认值

复习函数基本概念

函数(方法)本质是一块具有名称的代码块,可以使用函数(方法)的名称来执行该代码块
函数(方法)是封装代码进行重复使用的一种机制

函数(方法)的主要作用

  1. 封装代码
  2. 提升代码复用率(少写点代码)
  3. 抽象行为

Java的函数写在哪里

class​ 语句块中,Java 中没有结构体,所以不存在结构体语句块

Java函数基本语法

1
2
3
4
5
6
7
8
9
10
   1      2      3                4
修饰符 返回类型 函数名(参数类型 参数名1, 参数类型 参数名2, .......)
{
函数的代码逻辑;
函数的代码逻辑;
函数的代码逻辑;
.............
5
return 返回值;(如果有返回类型才返回)
}
  1. 修饰符 staticpublicprivateprotected​ 等

  2. 返回类型

    1. 关于返回类型 void​(表示没有返回值)
    2. 返回类型 可以写任意的变量类型
  3. 关于函数名

    Java中一般使用驼峰命名法,也就是首字母小写,这和C#不同: myName​(驼峰命名法)MyName​(帕斯卡命名法)

  4. 参数列表

    1. 参数不是必须的,可以有0~n个参数,参数的类型也是可以是任意类型的
      多个参数的时候 需要用 逗号隔开
    2. 参数名 驼峰命名法
  5. 当返回值类型不为 void​ 时 必须通过 return​ 返回对应类型的内容
    (注意:即使是 void​ 也可以选择性使用 return​)

函数的重载

Java 允许同名但是返回值不同或者参数列表不同的函数,和 C# 一样

1
2
3
4
5
6
7
8
9
public static void test(String... strs) {
for (String s : strs) {
System.out.println(s);
}
}

public static int[] test(int a, int b) {
return new int[] { a, b, 3, 4 };
}

无参无返回值

1
2
3
4
5
6
7
public static void main(String[] args) {
sayHello();
}

public static void sayHello() {
System.out.println("你好世界");
}

输出:

1
你好世界

有参无返回值

1
2
3
4
5
6
7
public static void main(String[] args) {
seySomething("哈哈哈哈哈");
}

public static void seySomething(String str) {
System.out.println(str);
}

输出:

1
哈哈哈哈哈

无参有返回值

1
2
3
4
5
6
7
public static void main(String[] args) {
System.out.println(whatYourName());
}

public static String whatYourName() {
return "唐老狮";
}

输出:

1
唐老狮

有参有返回值

1
2
3
4
5
6
7
public static void main(String[] args) {
System.out.println(sum(1, 2));
}

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

输出:

1
3

有参有多返回值

Java 没有类似于 C# 元组,或者 ref​,out​ 那样的用法,因此,Java 的多返回值都通过数组来实现

1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) {
int[] arr = test(1, 2);
for (int x : arr) {
System.out.println(x);
}
}

public static int[] test(int a, int b) {
return new int[] { a, b, 3, 4 };
}

输出:

1
2
3
4
1
2
3
4

可变参数

和 C# 使用 params​ 然后接上一个数组不同,Java的可变参数是在参数列表内最后一个参数的参数类型前加上 ...​,函数内使用还是使用数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void main(String[] args) {
sayHello();
seySomething("哈哈哈哈哈");
System.out.println(whatYourName());
System.out.println(sum(1, 2));
int[] arr = test(1, 2);
for (int x : arr) {
System.out.println(x);
}
test("123123123", "abcabcabc", "666666666");
}

public static void test(String... strs) {
for (String s : strs) {
System.out.println(s);
}
}

输出:

1
2
3
123123123
abcabcabc
666666666