java入门基础

Java 入门之【方法 】的那些事

2017-01-05  本文已影响37人  start筑梦

虽然我们写过很多很多的方法,但是**** 什么是方法**** 呢?

在Java中,方法是语句的集合,它们在一起执行一个功能。是解决一类问题的步骤的有序组合,包含于类或对象中,在程序中被创建,在其他地方被引用。

为什么要写方法呢?自然是有*** 它的优点***。

  1. 有利于程序维护。
  2. 可以提高程序开发的效率。
  3. 提高了代码的重用性。

**** 方法的命名规则****

  1. 可以包括数字,但不能以它开头。

一般情况下,定义一个方法的语法是:

public static int funcName(int a, int b) {
  // body
}

其中:
1、 访问修饰符:方法允许被访问的权限范围, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用

2、 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为**** void ****;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用**** return ****语句返回值

3、 方法名:定义的方法的名字,必须使用合法的标识符

4、 参数列表:传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开

**** 方法的调用****
要想使用一个方法,该方法必须要被调用。方法调用有两种方式,一种是有返回值的,一种是没有返回值的。

调用方法很简单,当程序需要调用一个方法时,控制程序转移到被调用的方法,方法将会返回两个条件给调用者:

将返回void的方法作为一个调用语句,例如:

System.out.println("你好,明天!");```
该方法的返回值可以通过下面的例子被理解:

int result = sum(6, 9);```
****Java 中无参无返回值方法的使用****

public class Demo9 {

    public static void main(String[] args) {
        Demo9 hello = new Demo9();
        hello.show();
    }

    public void show() {
        System.out.println("加油!");
    }
}

****Java 中无参带返回值方法的使用****

public class Demo9 {

    public static void main(String[] args) {
        //创建对象,对象名叫hello
        Demo9 hello=new  Demo9();
        //调用方法并接收方法的返回值,保存在变量sum中
        int sum=hello.calNum();
        System.out.println("两数之和:"+sum);

    }

    // 定义无参数返回值的方法
    public int calNum() {
        int a = 5;
        int b = 10;
        int sum = a + b;
        return sum;
    }

}

**** Java 中带参无返回值方法的使用****

public class Demo10 {

    public static void main(String[] args) {
        Demo10 hello=new Demo10();
        hello.calcAvg(50, 51);
    }
   // 定义带参数返回值的方法
    public void calcAvg(int a,int b){
        double avg=(a+b)/2.0;
        System.out.println("平均分: "+avg);
    }
}

**** Java 中带参带返回值方法的使用****

public class Demo11 {

    public static void main(String[] args) {
        Demo11 hello=new Demo11();
        int []scores={79,52,80,99};
        //调用方法,传入成绩数组,并取得成绩的个数
        int count=hello.sort(scores);
    }
    public int sort(int []scores) {
    Arrays.sort(scores);
        System.out.println(Arrays.toString(scores));
        return scores.length;
    
    }
}

**** 构造方法 ****
当一个对象被创建时候,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但构造方法没有返回值。
不管你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,它把所有成员初始化为0。
一旦你定义了自己的构造方法,默认构造方法就会失效。
例如:

// 一个简单的构造函数
class MyClass {
      int x; 
// 以下是构造函数
 MyClass() { 
      x = 10;
  }
}

**** 方法重写与方法重载的区别****

方法重写与方法重载.png

在面向对象程序设计的思想中,类的继承和多态性主要就是体现在子类重写父类的方法。而构造方法的重载作为方法重载的一个典型特例,可以通过重载构造方法来表达对象的多种初始化行为。
参考博客: 方法重写与方法重载

**** finalize() 方法****
Java 允许定义这样的方法,它在对象被垃圾收集器析构(回收)之前调用,用来清除回收对象。例如,你可以使用 finalize() 来确保一个对象打开的文件被关闭了。
在 finalize() 方法里,你必须指定在对象销毁时候要执行的操作。
finalize()方法一般是如下形似:

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

关键字 protected 是一个限定符,它确保 finalize() 方法不会被该类以外的代码调用。
当然,Java 的内存回收可以由 JVM 来自动完成。如果手动使用,则可以使用上面的方法。例子:

public class Demo12 {

    public static void main(String[] args) {

        Cake c1 = new Cake(1);
        Cake c2 = new Cake(2);
        Cake c3 = new Cake(3);

        c2 = c3 = null;
        System.gc(); // 调用Java垃圾收集器
    }
}

    class Cake extends Object {
        private int id;
    
        public Cake(int id) {
            this.id = id;
            System.out.println("Cake Object " + id + "is created");
        }
    
        protected void finalize() throws java.lang.Throwable {
            super.finalize();
            System.out.println("Cake Object " + id + "is disposed");
        }

}

运行结果如下:

Cake Object 1is created
Cake Object 2is created
Cake Object 3is created
Cake Object 3is disposed
Cake Object 2is disposed

关于方法的事,就讲这么多了。如有不对的地方,请指正。谢谢~

上一篇下一篇

猜你喜欢

热点阅读