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支持两种调用方法的方式,根据方法是否返回值来选择。
- 当方法返回一个值时,方法调用通常被当作一个值。
- 若方法返回值时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;
}
}
运行结果:
以上。