Java方法——方法定义,方法重载,参数和返回值

一、解释 System.out.println()
(1)println()是一个方法
(2)System是系统类
(3)out是标准输出对象
(4)含义:调用系统类System中的标准输出对象out中的方法println()

二、方法的定义与语法规则
1、方法:看成是一个功能的集合,为了解决特定问题的代码组合。
(1)方法时解决一类方法的步骤的有序组合
(2)方法包含于类或对象中
(3)方法在程序中被创建,在其他地方被引用
(4)优点:
          《1》 使程序变得更简短而清晰。
          《2》 有利于程序维护。
          《3》 可以提高程序开发的效率。
          《4》提高了代码的重用性。
2、定义语法:
访问修饰符 返回值类型 方法名(参数列表){
     方法体
     return 返回值 
}
(1)访问修饰符:代表方法允许被访问的权限范围。可以是public、protected、private、省略
(2)方法名一般采用第一个的单词首字母小写,其他单词首字母大写的形式
(3)调用方法的语法是:对象名.方法名
3、方法调用
(1)Java支持两个调用方法的方式,根据方法是否返回值来选择。
         ①当方法返回一个值时,方法调用通常被当做一个值
     int larger = max(30, 40);
         ②如果方法返回值是void,方法调用一定是一条语句。
     System.out.println("欢迎!");

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


三、参数与参数列表
1、区分实参和形参
public class PrintScore {
     public static void main(String[] args) {  
          // 创建对象,对象名为a
          PrintScore a = new PrintScore();
          double rAve;       //用来存放返回的平均成绩
          //两课的成绩,是我们实际的参数
          int sub1 = 78; int sub2 = 99;
           // 调用方法,传入两门课程的成绩
          rAve = a.calcAve(sub1,sub2);
          System.out.println("平均分:"+rAve); }
          /* * 功能:计算两门课程考试成绩的平均分并输出平均分 * 定义一个包         
          含两个参数的方法,用来传入两门课程的成绩 * 两个参数 a 和 b 为我们
          的形参,只在方法内有效 */
 
          public double calcAve(int a, int b){
               double ave = (a + b) / 2;
               return ave;
          }
}
通过内存图来说明两者的区别:
(1)方法调用前内存的情况,所有变量都存放在栈中,由系统统一管理。
        因为在定义rAve时未对它进行初始化,所以他的值是随机的,由它所在空间原有的值 
        决定。
      
 (2)创建对象时系统会为对象分配内存空间。
         方法调用时,系统会专门为方法开辟一块空间用来存放方法内的变量。即sub1和
         sub2两个实参并没有进入方法中,只是将值付给了形参a和b
          
(3)方法调用结束后,系统会释放掉方法所产生的空间,回收系统资源。
         
2、(1)调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应
     (2)调用方法时,实参不需要指定数据类型

四、方法重载
1、方法重载:在一个类中,有一系列的方法具有方法名相同,但参数列表不同
2、进行方法重载时要遵循的规则:
(1)在使用方法重载的时候,必须通过方法中不同的参数列表来实现方法的重载。例如:
        方法的参数个数不同或方法的参数类型不同
(2)不能通过访问权限,返回值类型和抛出的异常来实现重载
(3)重载的方法中允许抛出不同异常
(4)可以有不同的返回类型,只要方法的参数列表不同即可
(5)可以有不同的访问修饰符

五、返回值
1、如果方法的返回类型为 void ,则方法中不能使用 return 返回值。
2、方法的返回值最多只能有一个,不能返回多个值。
3、方法返回值的类型必须兼容,也就是说如果返回值类型为 int ,则不能返回 String 型值
4、调用带返回值的方法时,由于方法执行后会返回一个结果,因此在调用带返回值方法时
     一般都会接收其返回值并进行处理

六、变量作用域
1、局部变量:方法内定义的变量
     局部变量的作用范围从声明开始,知道包含它的块结束
     局部变量必须声明才可以使用
2、方法的参数范围涵盖整个方法。参数实际上是一个局部变量
3、for循环的初始化部分声明的变量,其作用范围在整个循环

七、构造方法
1、当一个对象被创建时候,构造方法用来初始化该对象。构造方法和它所在类的名字相
     同,但构造方法没有返回值。
2、不管你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构 
     造方法,它把所有成员初始化为0。一旦你定义了自己的构造方法,默认构造方法就会
     失效。
// 一个简单的构造函数
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);
     }
}

八、可变参数
 1、Java支持传递同类型的可变参数给一个方法
 2、方法的可变参数的声明:
typeName... parameterName
     《1》在方法声明中,在指定参数类型后加一个省略号
     《2》一个方法只能指定一个可变参数,它必须是方法的最后一个参数。任何普通参数
             必须在它之前声明
public static void printMax( double... numbers)

九、finalize()方法
1、在对象被垃圾收集器析构(回收)之前调用,用来清除回收对象
     例如,你可以使用 finalize() 来确保一个对象打开的文件被关闭了。
2、在 finalize() 方法里,你必须指定在对象销毁时候要执行的操作。
     finalize() 一般格式是:
protected void finalize(){
     // 在这里终结代码
}
(1)关键字 protected 是一个限定符,确保 finalize() 方法不会被该类以外的代码调用。
(2)Java 的内存回收可以由 JVM 来自动完成。如果你手动使用,则可以使用上面的方
         法。
(3)实例:
public class FinalizationDemo {
     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");
     }
}


输出结果:
$ javac FinalizationDemo.java
$ java FinalizationDemoCake Object 1is created
Cake Object 2is created
Cake Object 3is created
Cake Object 3is disposed
Cake Object 2is disposed

参考:http://www.runoob.com/java/java-methods.html
https://www.shiyanlou.com/courses/18/labs/99/document

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值