JAVA基础教程:功能Functions
当前位置:以往代写 > JAVA 教程 >JAVA基础教程:功能Functions
2019-06-14

JAVA基础教程:功能Functions

JAVA基础教程:功能Functions

功能Functions


在Java中,所有函数定义必须在类中。我们也称函数方法。我们来看一个示例方法

public class Main {
    public static void foo() {
        // Do something here
    }}

foo是我们在Main类中定义的方法。注意一些事情foo

  • static表示此方法属于Main类,而不属于Main的特定实例。这意味着我们可以从不同的类中调用该方法Main.foo()

  • void表示此方法不返回值。方法可以在Java中返回单个值,并且必须在方法声明中定义。但是,您可以单独使用return它来退出该方法。

  • 这个方法没有得到任何参数,但当然Java方法可以得到参数,我们将进一步看到。

参数

我总是喜欢说Java方法的参数是通过值传递的,尽管有些人可能不同意我选择的单词,我发现它是解释和理解它如何正常工作的最佳方式。

按值表示在方法运行时复制参数。我们来看一个例子。

public void bar(int num1, int num2) {
    ...}

这是代码中的另一个地方,其中调用了bar

int a = 3;int b = 5;bar(a, b);

你可以想象一下,在运行时,就像在下面两行的开头写的那样:bar(a, b)bar

int num1 = a;int num2 = b;

然后才运行该方法的其余部分。

这意味着将a值复制到num1b复制值num2改变num1num2不会影响a的值b

如果参数是对象,则规则保持不变,但它的作用有点不同。这是一个例子:

public void bar2(Student s1, Student s2) {
    ...}

以下是我们如何使用它

Student joe = new Student("joe");Student jack = new Student("jack");bar2(joe, jack);

我们再次可以在开头画出相同的两行 bar2

Student s1 = joe;Student s2 = jack;

但是当我们分配对象时,它与分配基元有点不同。s1并且joe是对同一对象的两个不同引用。是真的。这意味着运行方法将改变对象但是,如果我们将更改作为参考的值,它将不会影响参考s1 == joes1joes1joe

s1.setName("Chuck"); // joe name is now Chuck as wells1 = new Student("Norris"); // s1 is a new student, different than joe with the name of Norris// s1 == joe   is not true anymore

非静态方法

Java中的非静态方法比静态方法更多。这些方法只能在对象上运行,而不能在整个类上运行。

非静态方法可以访问和更改对象的字段。

public class Student {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }}

调用方法将需要一个类型的对象Student

Student s = new Student();s.setName("Danielle");String name = s.getName();Student.setName("Bob"); // Will not work!Student.getName(); // Will not work!

概要

  • 每个Java方法都必须在一个类中

  • 静态方法属于一个类,而非静态方法属于对象

  • 函数的所有参数都按值传递,原始内容被复制,而对象不被复制,有些人会说“通过引用传递”

    关键字:

在线提交作业