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