Java方法

在前面咱们常用到System.out.println(),那么它是什么呢?java

  • println()是一个方法。
  • System是系统类。
  • out是标准输出对象。

这句话的用法是调用系统类System中的标准输出对象out中的方法println()。数组

那么什么是方法呢?

java方法是语句的集合,他们在一块儿执行一个功能。函数

  • 方法是解决一类问题的步骤的有序组合。
  • 方法包含于类或者对象中。
  • 方法在程序中被建立,在其余地方被引用。

方法的优势

  1. 程序变得简短清晰。
  2. 有利于程序维护。
  3. 能够提升程序开发的效率。
  4. 提升了代码的重用性。

方法的命名规则

  1. 方法的名字的第一个单词应该以小写字母开始,后面的单词则用大写字母开头写,不使用链接符。
  2. 下划线可能出如今JUnit测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test<MethodUnderTest>_<state>,例如testPop_emptyStack。

方法的定义

修饰符 返回值类型 方法名(参数类型 参数名){
。。。
方法体
。。。
return 返回值;
}
  • 修饰符是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
  • 方法可能会返回值。有些方法执行所需的操做,但没有返回值,这种状况下returnValueType是关键字void。
  • 参数像是一个占位符。当方法被调用时,传递值给参数。这个值称为实参或者变量。参数是可选的,参数能够有多个,方法能够不包含任何参数。  


方法调用

Java支持两种调用方法的方式,根据方法是否返回值来选择。测试

当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交换控制权给程序。spa

当方法返回一个值的时候,方法调用一般被看成一个值。例如:命令行

int larger=max(30,40);

若是方法返回值是void(能够有参数),方法调用必定是一条语句例如,方法println()返回void。下面的调用是个语句:对象

public void ending(){
System.out.println("Thanking for view!")
}

没法从静态上下文中引用非静态方法。  blog

package pkg2020华南虎;

/**
 *
 * @author yl
 */
public class TestMax {

    public static void main(String[] args) {
        int i = 20;
        int j = 23;
        int k = max(i, j);
        System.out.println("Max number is "+k+".");
    }

    public static int max(int a, int b) {
        int result;
        if (a > b) {
            result = a;
        } else {
            result = b;
        }
        return result;
    }
}

main方法是被JVM调用 的,除此以外,main方法和其余方法没什么区别。String【】代表参数是字符串数组。继承


void关键字  

package pkg2020华南虎;

/**
 *
 * @author yl
 */
public class TestVoidMethod {

    public static void main(String[] args) {
        printGrade(78.5);
    }

    static void printGrade(double score) {
        if (score > 90) {
            System.out.println(score + " is perfect.");
        } else if (score > 60) {
            System.out.println(score + " is OK.");
        } else {
            System.out.println(score + " is Flunk.");
        }
    }
}

这里printGrade方法是一个void类型方法,它不返回值。内存

一个void方法的调用必定是一个语句。  


 

经过值传递参数

调用一个方法的时候须要提供参数,你必须按照参数列表指定的顺序提供。

例如,下面的方法n次打印一个消息。

public static void nPrintln(String message,int n){
for(int i<0;i<n;i++){
System.out.println(message);
}
}

下面的例子演示按值传递的效果。

该程序建立一个方法,该方法用于交换两个变量。

package pkg2020华南虎;

/**
 *
 * @author yl
 */
public class SwapValue {

    public static void main(String[] args) {
        int num1 = 1;
        int num2 = 5;
        swap(num1, num2);
        System.out.println("num1,num2:" + num1 + "," + num2);
    }

    static void swap(int a, int b) {
        int temp;
        temp = a;
        a = b;
        b = temp;
    }
}

传递两个参数调用swap方法。可是,方法被调用后,实参的值并无改变。  


方法的重载

上面使用的max方法仅仅适用于int类型的数据,可是若是你想要的到两个浮点型数据的最大值呢?

解决方法是建立另外一个有相同名字可是参数不一样的方法,以下代码所示:

public static double max(double num1,double num2){
int result;
if(num1>num2) 
result=num1;
else
result=num2;
return result;
}

若是你调用max方法时传递的是int型参数,则int型参数的max方法会被调用。

若是传递的是double型参数,则double类型的max方法体会被调用,这称为方法重载。

即一个类的两个方法拥有相同的名字,可是有不一样的参数列表。Java编译器根据方法签名判断哪一个方法应该被调用。方法重载可让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。


变量做用域  


命令行参数的使用  

 

package pkg2020华南虎;

/**
 *
 * @author yl
 */
public class CommandLine {
    public static void main(String[] args) {
        for(int i=0;i<args.length;i++){
            System.out.println("args["+i+"]"+args[i]);
        }
    }
}

构造方法  

 当一个对象被建立的时候,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但构造方法没有返回值。

一般会使用构造方法给一个类的实例变量赋初值,或者执行其余必要的步骤来建立一个完整的对象。

无论你是否自定义构造方法,全部的类都有构造方法,由于Java自动提供了一个默认构造方法,默认构造方法的访问修改符和类的访问修改符相同(类为public,构造函数也为public;类改成protected,构造函数也改成protected)。一旦你定义了本身的构造方法,默认构造方法就会失效。

实例 

class MyClass{
int x;

MyClass(){//构造函数
x=10;
}
}

也能够像下面这样调用构造方法来初始化一个对象:  

public class ConsDemo{
public static void main(String[]args){
MyClass t1=new MyClass();
MyClass t2=new MyClass();
System.out.println(t1.x+" "+t2.x);
}
}

大多时候须要一个有参数的构造方法。  

 实例

 

class MyClass{
int x;
MyClass(int i){//构造函数
x=i;
}
}
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);
}
}

可变参数  

JDK1.5开始,Java支持传递同类型的可变参数给一个方法。

实例


 

finalize()方法

Java容许定义这样的方法,它在对象被垃圾收集器(回收)以前调用,这个方法叫作finalize(),它用来清除回收对象。例如,你可使用finalize()来确保一个对象打开的文件被关闭了。

在finalize()方法里,你必须指定在对象销毁时候要执行的操做。

finalize()通常格式是:

protected void finalize(){
//终结代码
}

protected限定符不可被继承,确保finalize()方法不会被该类之外的代码调用;void返回语句。

固然,Java的内存回收能够由JVM来自动完成。若是你手动使用,则可使用上面的方法。  

相关文章
相关标签/搜索