JAVA学习笔记(5)

一、方法及其定义

Java语言中的“方法”(Method),在C语言中被称为“函数”(Function)。

方法的语法:

修饰符列表 返回值类型 方法名(参数列表) 
{
    方法体;

    return 返回值;
}

修饰符:修饰符,是可选的,定义了该方法的访问类型。

返回值类型:方法可能会返回值,返回值类型决定方法最终产生的结果数据是什么类型。

方法名:方法的实际名称,是自定义的名称,命名规则和变量一样。

参数列表:指方法的参数类型、顺序和参数的个数。

方法体:方法内部执行的若干行代码。

return:结束方法的执行,并将返回值返还给调用处。

返回值:方法最终产生的结果数据。

注:(1)修饰符现阶段固定为public static两个关键字。

       (2)返回值必须和返回值类型对应。

       (3)参数是可选的,如果有多个参数需使用逗号分隔,如果没有参数则小括号可以留空。

       (4)不能在一个方法内部定义方法。

       (5)方法定义之后,没有调用就不会执行;要想执行,一定要调用。

Eg:

class Demo 
{
    
 public static void main(String[] args) 
	 {
        int result = sum(700, 77);
		System.out.println(result);  // 也即 System.out.println(sum(700, 77));
     }
 
 public static void test() 
	 {
	     System.out.println("Hello World!");
	 }
 
 public static int sum(int x, int y) 
	 {
	     int result = x + y;  //在main方法和sum方法中都定义了int型的result,二者不冲突
	                          //原因在于二者不在同一个作用域中,方法结束后内存会释放
		 return result;       //执行return语句后,如果后面还有Java语句,则这些Java语句不被执行
     }
}

输出结果:

java 方法和方法体 java中什么是方法体_System


二、方法的调用及执行

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

  • 当方法返回一个值时,方法调用通常被当作一个值。
  • 若方法返回值时void,方法调用则是一条语句。如,方法 println 返回 void ,则其调用是个语句:System.out.println("Hello World!");

方法只有在调用时才被执行,未调用时不会被执行。

  • 但 main方法 不需要调用也会被执行。因为main方法是应用程序的入口,jvm在加载完程序后会自动寻找main方法,如果找不到,会直接报错。一个程序要运行起来,一定要有一个入口,即main方法。
  • 一般情况下,main方法中是没有return的。当main方法中的代码执行完毕后,就会自动结束。因为 Java中代码是顺序执行的。但main方法运行结束,并不代表程序也运行结束。

三、变量的作用域

(1)一般来说,一个花括号{ }就是一个作用域。

(2)嵌套得越深的{ }作用域,一般来说级别越低。

(3)方法中所涉及到的变量都叫局部变量,如方法的形参、方法内部定义的变量。

(4)for循环、while循环中定义的变量,作用域只在循环内。


四、方法重载(method overloading)

方法名可以同名,因为Java中有这样的机制,叫做方法重载。重载是面向对象的一个基本特性。

方法重载机制发生的条件:(这三个条件一定要同时满足)

  • 在同一个类中
  • 方法名相同
  • 方法的参数列表不相同。参数类型不同、参数个数不同或参数顺序不同。

方法重载的特点:

  • 与返回值类型无关, 只看方法名和参数列表。
  • 在调用时, JVM通过参数列表的不同来区分同名方法

Eg:

class Demo
{
 public static void main(String[] args)
 {
	 System.out.println("结果是:"+add(7,7));
	 System.out.println("结果是:"+add(7.7,7));
	 System.out.println("结果是:"+add(7.7,7.7));
	 System.out.println("结果是:"+add(7,7.7));
	 System.out.println("结果是:"+add(7,7.7,7));
 }

 public static int add(int x, int y)
	{
	     return x+y;
	}
 public static double add(double x, int y)
	{
	     return x+y;
	}
public static double add(double x, double y)
	{
	     return x+y;
	}
public static double add(int x, double y)
	{
	     return x+y;
	}
public static double add(int x, double y, int z)
	{
	     return x+y+z;
	}
}

运行结果:

java 方法和方法体 java中什么是方法体_java 方法和方法体_02


以上。