继续我们的简单教学。今天我们会说说JAVA的方法定义,以及怎么去调用方法。
首先我们创建一个新的类:MethodCall
[img]http://dl.iteye.com/upload/attachment/181723/d208a0fa-0e81-326b-bbe8-8ca2fd1d04d9.jpg[/img]
在做今天的教学之前,先说明一下java定义方法的格式:
上面用了正则表达式的写法来说明Java方法的定义格式,()?表示括号里面的东西可能出现,也可能不出现,()*表示()里面的东西可能出现多个,也可能不需要出现。现在来说明一下几个()的内容:
[table]
|名称|可选值|描述|
|modifier|public/protected/private|描述此方法可被访问的权限策略类型。|
|static|static|静态方法描述关键字,表示此方法是否静态方法|
|final|final|恒量方法描述关键字,表示此方法是否不允许被继承类重写|
|returnType|java类或void|如果为Java的一个类,说明此方法会返回一个此类型的值或者可能为null(空对象),如果为void则说明此方法不会返回任何值|
|ParamType|java类|和returnType一样|
|param|参数名|参数名供方法体内部调用时使用|
[/table]
以下是一些方法定义的例子:
以上三个方法都是正确的。在这里我要特别强调一下,方法名和参数名虽然理论上来说只要遵循默认的规则:“不能以数字开始,不能为特殊关键字,不能带特殊符号”这三大原则就可以过关,但是我强烈要求大家按照JAVA的编程标准来进行命名,规则如下:
[list=1]
[*]除了数字之外都使用英文命名,不要用拼音
[*]除第一个英文单词外,每个英文单词首字母大写,如helloMrJack
[*]如果英文太长,使用常用的所写进行简化,如organization可以所写为org
[*]方法和参数名要有意义,容易猜测其意思,不要使用arg1,arg2之类的名字做变量
[*]对方法和复杂的代码逻辑使用适量的注释加以说明
[/list]
标准化的编码可以提高代码的可读能力,一方面可以体现你的编码水平,另一方面当你把代码贴出来给别人看,以帮你解决问题的时候也可以提高效率。尽量让你的代码具有可读性是程序员必要的修养之一。
好了,说了这么多,我们现在可以开始在MethodCall里面定义我们的实验方法了:
这个方法接受一个字符串类型参数param1,并且直接把它显示出来。
现在我们尝试在main里面调用这个方法:
执行结果就是显示了"Hello World"。这个就是方法的调用例子。在这里,"Hello World"字符串会在其进入publicStaticMethod中之前被分派到param1这个参数里面去,到了publicStaticMethod里面,方法体就会通过这个param1来对外部的输入进行统一的操作处理,而不会管它内部的实际内容是什么。
简单来说就是照单全收,像这个例子就是我输入什么,它就执白的显示什么!
然后我们继续我们的实验,来改一下modifier为private,创建另一个方法,并且带有return类型为字符串的:
这时,你会发现Eclipse会指示这个方法出错:
[img]http://dl.iteye.com/upload/attachment/181753/e4d0cacb-3d8a-3912-94eb-ff8e46740ba8.jpg[/img]
那么我们现在加个返回值:
注意return这个关键字,表示该方法到这里就会返回return后面的内容。该内容只能为和返回类型相同的类型或者为null。如果是基础数据类型(如int,char等)就只能返回基础数据类型,不能返回null。这个我们后续再说。
这个方法简单地把两个字符串串接起来,并且会返回给调用行这个串接的结果。我们来看看它的作用:
执行之后,除了第一行的Hello World,还会有第2行的HelloJJ。
就说明两个方法都调用成功了。那么public和private又有什么作用呢?static和final又有什么作用呢?
今天就差不多了,我先卖个关子。明天我再在后续内容对这两组指示器进行说明吧。
首先我们创建一个新的类:MethodCall
[img]http://dl.iteye.com/upload/attachment/181723/d208a0fa-0e81-326b-bbe8-8ca2fd1d04d9.jpg[/img]
在做今天的教学之前,先说明一下java定义方法的格式:
(modifier)? (static)? (final)? returnType methodName((ParamType param)*)
{
//method body
}
上面用了正则表达式的写法来说明Java方法的定义格式,()?表示括号里面的东西可能出现,也可能不出现,()*表示()里面的东西可能出现多个,也可能不需要出现。现在来说明一下几个()的内容:
[table]
|名称|可选值|描述|
|modifier|public/protected/private|描述此方法可被访问的权限策略类型。|
|static|static|静态方法描述关键字,表示此方法是否静态方法|
|final|final|恒量方法描述关键字,表示此方法是否不允许被继承类重写|
|returnType|java类或void|如果为Java的一个类,说明此方法会返回一个此类型的值或者可能为null(空对象),如果为void则说明此方法不会返回任何值|
|ParamType|java类|和returnType一样|
|param|参数名|参数名供方法体内部调用时使用|
[/table]
以下是一些方法定义的例子:
public void method1()
{
//method body
}
private final String method2(String param1)
{
//method body
}
Object method3(Object param1,int param2)
{
//method body
}
以上三个方法都是正确的。在这里我要特别强调一下,方法名和参数名虽然理论上来说只要遵循默认的规则:“不能以数字开始,不能为特殊关键字,不能带特殊符号”这三大原则就可以过关,但是我强烈要求大家按照JAVA的编程标准来进行命名,规则如下:
[list=1]
[*]除了数字之外都使用英文命名,不要用拼音
[*]除第一个英文单词外,每个英文单词首字母大写,如helloMrJack
[*]如果英文太长,使用常用的所写进行简化,如organization可以所写为org
[*]方法和参数名要有意义,容易猜测其意思,不要使用arg1,arg2之类的名字做变量
[*]对方法和复杂的代码逻辑使用适量的注释加以说明
[/list]
标准化的编码可以提高代码的可读能力,一方面可以体现你的编码水平,另一方面当你把代码贴出来给别人看,以帮你解决问题的时候也可以提高效率。尽量让你的代码具有可读性是程序员必要的修养之一。
好了,说了这么多,我们现在可以开始在MethodCall里面定义我们的实验方法了:
package hello;
public class MethodCall {
/**
* @param args
*/
public static void main(String[] args) {
}
/**
* 定义一个非静态共有方法
* @param param1
*/
public void publicStaticMethod(String param1)
{
System.out.println(param1);
}
}
这个方法接受一个字符串类型参数param1,并且直接把它显示出来。
现在我们尝试在main里面调用这个方法:
/**
* @param args
*/
public static void main(String[] args) {
publicStaticMethod("Hello World");
}
执行结果就是显示了"Hello World"。这个就是方法的调用例子。在这里,"Hello World"字符串会在其进入publicStaticMethod中之前被分派到param1这个参数里面去,到了publicStaticMethod里面,方法体就会通过这个param1来对外部的输入进行统一的操作处理,而不会管它内部的实际内容是什么。
简单来说就是照单全收,像这个例子就是我输入什么,它就执白的显示什么!
然后我们继续我们的实验,来改一下modifier为private,创建另一个方法,并且带有return类型为字符串的:
private static String privateStaticMethodWithReturn(String param1,String param2)
{
}
这时,你会发现Eclipse会指示这个方法出错:
[img]http://dl.iteye.com/upload/attachment/181753/e4d0cacb-3d8a-3912-94eb-ff8e46740ba8.jpg[/img]
那么我们现在加个返回值:
private static String privateStaticMethodWithReturn(String param1,String param2)
{
return param1+param2;
}
注意return这个关键字,表示该方法到这里就会返回return后面的内容。该内容只能为和返回类型相同的类型或者为null。如果是基础数据类型(如int,char等)就只能返回基础数据类型,不能返回null。这个我们后续再说。
这个方法简单地把两个字符串串接起来,并且会返回给调用行这个串接的结果。我们来看看它的作用:
public static void main(String[] args) {
publicStaticMethod("Hello World");
System.out.println(privateStaticMethodWithReturn("Hello","JJ"));
}
执行之后,除了第一行的Hello World,还会有第2行的HelloJJ。
就说明两个方法都调用成功了。那么public和private又有什么作用呢?static和final又有什么作用呢?
今天就差不多了,我先卖个关子。明天我再在后续内容对这两组指示器进行说明吧。