返回类型是您从中得到的。当你调用它时,你希望得到什么?例如,如果该方法获取两个数字的平均值,那么您期望返回一个数字,因此返回类型将是一个数字类型,如“int”(整数)。
您可以使用该逻辑或通过查看方法中的单词 return 来查看它应该是什么 - return 之后的内容是返回的内容,并且它的类型应该在方法中声明(例如,如果它说“return 4;”它是返回一个 int,应该是例如 public int getFour()
您还询问了例如测试()与测试(单词)
我记得有同样的困难。两者的区别还与方法声明行有关。我会举例说明。
public String testing(){
return "a word";
}
通过执行“System.out.println(testing());”调用此方法应该打印“一个词”。通过执行“System.out.println(testing("a word"));”调用此方法会给你一个问题 - 这是因为当你调用测试时,它会查看适当的方法:一个在正确的类中,具有正确的返回类型和正确的参数/参数。如果您正在调用 testing("a word"),这意味着您正在使用 String 作为参数(因为“a word”是一个字符串),因此它会尝试使用 testing(String aString) 方法 -不存在。
所以当方法没有输入时你使用空括号,当方法需要东西时你把东西放在括号里。这应该不像听起来那么令人困惑,因为它通常是合乎逻辑的——如果你想调用一个返回平均值的方法,你需要问自己“what 的平均值?”您可能需要为其提供您想要的平均值。
继续:(a) testing() vs(b) AClass.testing() vs(c) aclass.testing() -
在 (a) 中,没有指定类。因此,如果你从那个类中调用它,Java 可以猜出是哪个类:这个类,它会工作。在任何其他班级,它不会知道你在说什么,甚至可能会侮辱你。
在 (b) 中,您通常指定一个类 - 因此它会知道在哪个类中找到它 - 如果它是“静态方法”,它将起作用。 *[见底部]
在 (c) 中,您指定了要在 * 上运行“testing()”的 AClass instance。
例如,假设您创建了一个名为 Business 的类。您可以通过为每个业务对象指定名称、编号和地址来创建一百个业务对象。
例如
Business b = new Business(name, number, address);
然后在 Business 类中,您有一个方法“getName()”。这个方法没有参数——你可以看到括号是空的——所以如果你从另一个类调用“Business.getName()”,它怎么知道你想要哪个名字?你刚刚做了一百个生意!
它根本做不到。因此,对于这样的方法,您将调用“b.getName()”(b 是我们在上面创建的业务),它将获得业务的 this instance 的名称 - 即 b .
我很乐意提供帮助,所以如果您对我刚刚写的任何特定部分感到困惑,请告诉我,我会尽力详细说明!
编辑:关于静态方法的一点:
静态方法不属于该类的实例。例如,getName() 将获取 this Business 的名称 - 即 Business 类的这个实例。但是假设在 Business 类中,您创建了一个方法,该方法将 String 中每个单词的首字母转换为大写 - 就像您想在打印出来时让公司名称看起来更专业一样。
public static String stringToUpperCase(String aString){
aString = aString.substring(0, 1).toUpperCase() + aString.substring(1);
return aString;
}
要使用它,您可以从以下位置更改 getName() 方法:
public String getName(){
return name;
}
到
public String getName(){
return stringToUpperCase(name);
}
这里使用新方法使名称的首字母大写——但这就是它与 Business 类的关系。您注意到它不会询问有关特定企业的名称、地址或号码的信息。它只需要你给它的一个字符串,对它做一些事情,然后把它还给它。无论您是没有企业还是有一百个企业都没有关系。
要调用此方法,您可以使用:
System.out.println(Business.stringToUpperCase("hello"));
这将打印 Hello。
如果它不是静态方法,则必须先创建一个新业务:
Business b = new Business("aName", "aNumber", "anAddress");
System.out.println(b.stringToUpperCase("hello"));
如果方法确实需要访问更多业务实例信息(如业务的名称编号或地址),它就不能成为实例变量。