Java方法详解
方法的声明
先举例一个最熟悉的方法:
public static void main(String[] args){
System.out.println("Hello World!");
}
可以看到,main方法由这几部分构成:
**权限修饰符:**权限修饰符包括四种,private、缺省、protected、public。
**关键词static:**即静态的,之后进行具体分析。
**返回值类型:**有两种情况,无返回值的void和有返回值的情况。
**方法名:**属于标识符,命名时需要见名知意,且遵守命名格式:首字母小写,如果由多个单词组成,其余单词的首字母大写。
**形参列表:**注意属性与局部变量的区别。
下面具体展开需要注意的点。
权限修饰符
四个权限修饰符private、缺省、protected、public,他们的权限由小到大。
**private:**类的内部能够调用
**缺省:**同一个包内能够调用
**protected:**不同包的子类能够调用
**public:**同一个工程内能够调用
属性与局部变量
这里重点比较属性与局部变量的不同点:
1、声明的位置不同
属性定义在类的内部。
局部变量声明于方法、方法形参、代码块、构造器形参以及构造器内部。
2、初始化
属性根据其类型具有初始化值:整形的初始化值为0、浮点型的初始化值为0.0、char类型的初始化值为0、布尔类型的初始化值为false、引用数据类型(如:对象、数组)的初始化值为null。
局部变量不具有初始化值。
3、内存加载位置不同
属性(非static)加载于堆中,静态属性加载于方法区中。
局部变量加载于虚拟机栈中。
可变形参
可变形参与数组类似,下面使用代码举例:
class Party{
public void party(int bears, String ... people){
System.out.print("我们在开派对,这里有" + bears + "瓶酒。");
for (String person : people){
System.out.print(person + " ");
}
System.out.println("都来了");
}
}
我们创建了一个Party类,其中的party方法有两个参数,一个bear和可变形参people。可变形参与数组类似,但必须声明在形参列表的末尾,且只能由一个。
在主函数中调用:
public static void main(String[] args) {
Party p = new Party();
p.party(100, "李雷", "韩梅梅", "牛牛");
}
输出结果为:我们在开派对,这里有100瓶酒。李雷 韩梅梅 牛牛 都来了
方法的重载
在一个类中,允许存在一个以上的同名方法,只要他们的形参列表不同即可。像这种同名方法便称为方法的重载,下面举例说明。
class Party{
public void party(){
System.out.println("我在家自嗨");
}
public void party(String friend){
System.out.println("我和" + friend + "在开party");
}
}
我们在Party类中定义了两个重载的方法,他们方法名相同,但参数列表不同(形参列表不同包括形参列表的顺序和数据类型以及形参个数的不同),并没有报错。下面我们分别调用他们运行运行试试。
public class Test {
public static void main(String[] args) {
Party p = new Party();
p.party();//输出:我在家自嗨
p.party("牛牛");//输出:我和牛牛在开party
}
}
关于方法,不仅有方法的重载,还有方法的重写。关于方法的重写之后进行说明。