Java方法
我们在编程中很常见的System.out.println(),那么它是什么呢?
println()是一个方法(Method),而System是系统类(Class),out是标准输出对象(Object)。这句话的用法是调用系统类System中的标准输出对象out中的方法printl()。
那么什么是方法呢?
Java方法是语句的集合,他们在一起执行一个功能,最近在看Java编程思想,我极力的推荐这本书,我来说一下我对方法的理解,首先我们都知道在Java中,万物皆为对象,例如人,猫,狗等等,而这些对象也就是人猫狗会有相应的动作,例如人会吃饭,睡觉等等,狗会摇尾巴,这些对象所做的动作成为方法,而对象中人,狗,猫这些是一个统称,我们需要一个具体的对象,像小红,小明等等,这些就称之为对象的一个实例(纯属自己的理解,可能会有错误。。)
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,或在其他地方被引用
方法的定义
一般情况下,定义一个方法包含以下语法:
修饰符(public...) 返回值类型(void) 方法名(参数类型 参数名){
方法体
return 值(如果是void可省略)
}
- 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
- 返回值类型 :方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void。
- 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。 - 方法体:方法体包含具体的语句,定义该方法的功能。
方法调用
Java支持两种调用方法的方式,根据方法是否返回值来选择
当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行货值到达方法体闭括号的时候交换控制权给程序
main方法想必大家都知道,这是被JVM调用的,除此之外,main方法和其他方法没什么区别
通过值传递参数
调用一个方法时候需要提供参数,你必须按照参数列表指定的顺序提供。
方法的重载
如果你调用max方法时传递的是int型参数,则 int型参数的max方法就会被调用;
如果传递的是double型参数,则double类型的max方法体会被调用,这叫做方法重载
变量作用域
变量的范围是程序中该变量可以被引用的部分。
方法内定义的变量被称为局部变量,局部变量的作用范围从声明时开始,直到包含他的块结束。
局部变量必须声明才能使用。
方法的参数范围覆盖整个方法。参数实际上是一个局部变量。
for循环的初始化部分声明的变量,器作用范围在整个循环,但循环体内声明的变量器适用范围是从它声明到循环体结束。
命令行参数的使用
有时候你希望运行一个程序时候在传递给他信息,这要靠传递命令行参数给main()函数实现。命令行参数是在执行程序时候紧跟在程序后面的信息
构造方法
当一个对象呗创建时,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但构造方法没有返回值。
通常会使用构造方法给一个类的实例变量赋值,或者执行其它必要的步骤来创建一个完整的对象。
不管你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,它 把所有成员初始化为0。一旦 你定义了自己的构造方法,默认构造方法就会失效。
实例:
public class ConsDemo{
public static void main(String[] args){
MyClass t1 = new MyClass(10);
MyClass t2 = new MyClass(20);
System.out.println(t1.x+" "+t2.x);
}
}
class MyClass{
int x;
MyClass(int i){
x = i;
}
}
可变参数
从JFDK1.5开始,Java支持同类型的可变参数给一个方法。
方法的可变参数的声明如下所示:
typeName... parameterName
在方法声明中,在指定参数类型后加一个省略号(…)。
一个方法中只能指定一个可变参数,他必须是方法的最后一个参数。任何普通的参数必须在它之前声明。这样就解决了我们有时候不知道方法里究竟有多少个参数。
finalize()方法
Java允许定义这样的方法,它在对象被立即收集器析构(回收)前调用,这个方法叫做finalize(),它用来清除回收对象。
例如,你可以使用finalize()来确保一个对象打开的文件关闭了。
在finalize()方法里,你必须指定在对象销毁时要执行的操作。
finalize()一般格式是:
protexted void finalize(){
//在这里终结代码
}
关键字protected是一个限定符,它确保finalize() 方法不会被该类以外的代码调用。
当然,Java的内存回收可以由JVM来自动完成。如果你手动使用,则可以使用上面的方法。
实例:
输出结果如下: