Java中的方法
Java或Java方法中的方法是执行某些特定任务并将结果返回给调用者的语句的集合。 Java方法可以执行某些特定任务而不返回任何内容。 Java中的方法允许我们在不重新键入代码的情况下重用代码。在Java中,每个方法都必须属于某个不同于 C、C++ 和Python等语言的类。
Note: Methods are time savers and help us to reuse the code without retyping the code.
方法声明
一般来说,方法声明有六个组成部分:
1.修饰符:它定义了方法的访问类型,即在您的应用程序中可以从哪里访问它。在Java中,有 4 种访问说明符。
- 公众:是 可在您的应用程序的所有类中访问。
- protected:可在定义它的类及其子类中访问
- 私人:它是 只能在定义它的类中访问。
- 默认值:它是在不使用任何修饰符的情况下声明/定义的。它可以在定义其类的同一类和包中访问。
2、返回类型:方法返回值的数据类型,如果不返回值则为void。
3. 方法名称:字段名称的规则也适用于方法名称,但约定略有不同。
4. 参数列表:定义了输入参数的逗号分隔列表,前面是它们的数据类型,在括起来的括号内。如果没有参数,则必须使用空括号 ()。
5. 异常列表:你期望方法可以抛出的异常,你可以指定这些异常。
6. 方法体:用大括号括起来。执行预期操作所需执行的代码。
Java中的方法类型
Java中有两种方法:
1、预定义方法:在Java中,预定义方法是Java类库中已经定义的方法,称为预定义方法。它也被称为标准库方法或内置方法。我们可以在程序中随时调用这些方法直接使用它们。
2、用户自定义方法:用户或程序员编写的方法称为用户自定义方法。这些方法根据需要进行修改。
方法签名
它由方法名称和参数列表(参数数量、参数类型和参数顺序)组成。返回类型和异常不被视为其中的一部分。
上述函数的方法签名:
max(int x, int y) Number of parameters is 2, Type of parameter is int.
如何命名方法?
方法名称通常是单个单词,应该是小写动词或多词,以小写动词开头,后跟形容词、名词……。在第一个单词之后,每个单词的第一个字母应大写.
命名方法的规则
- 定义方法时,请记住方法名称必须是动词并以小写字母开头。
- 如果方法名称有两个以上的单词,则第一个名称必须是动词,后跟形容词或名词。
- 在多词方法名称中,除第一个词外,每个词的首字母必须大写。例如,findSum、computeMax、setX 和 getX。
通常,方法在定义它的类中具有唯一名称,但有时方法可能与同一类中的其他方法名称相同,因为Java中允许方法重载。
方法调用
需要调用该方法才能使用其功能。调用方法时可能存在三种情况:
在以下情况下,方法会返回调用它的代码:
- 它完成了方法中的所有语句
- 它到达一个返回语句
- 抛出异常
例子:
Java
// Java Program to Illustrate Methods
// Importing required classes
import java.io.*;
// Class 1
// Helper class
class Addition {
// Initially taking sum as 0
// as we have not started computation
int sum = 0;
// Method
// To add two numbers
public int addTwoInt(int a, int b)
{
// Adding two integer value
sum = a + b;
// Returning summation of two values
return sum;
}
}
// Class 2
// Helper class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating object of class 1 inside main() method
Addition add = new Addition();
// Calling method of above class
// to add two integer
// using instance created
int s = add.addTwoInt(1, 2);
// Printing the sum of two numbers
System.out.println("Sum of two integer values :"
+ s);
}
}
Java
// Java Program to Illustrate Method Calling
// Via Different Ways of Calling a Method
// Importing required classes
import java.io.*;
// Class 1
// Helper class
class Test {
public static int i = 0;
// Constructor of class
Test()
{
// Counts the number of the objects of the class
i++;
}
// Method 1
// To access static members of the class and
// and for getting total no of objects
// of the same class created so far
public static int get()
{
// statements to be executed....
return i;
}
// Method 2
// Instance method calling object directly
// that is created inside another class 'GFG'.
// Can also be called by object directly created in the
// same class and from another method defined in the
// same class and return integer value as return type is
// int.
public int m1()
{
// Display message only
System.out.println(
"Inside the method m1 by object of GFG class");
// Calling m2() method within the same class.
this.m2();
// Statements to be executed if any
return 1;
}
// Method 3
// Returns nothing
public void m2()
{
// Print statement
System.out.println(
"In method m2 came from method m1");
}
}
// Class 2
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating object of above class inside the class
Test obj = new Test();
// Calling method 2 inside main() method
int i = obj.m1();
// Display message only
System.out.println(
"Control returned after method m1 :" + i);
// Call m2() method
// obj.m2();
int no_of_objects = Test.get();
// Print statement
System.out.print(
"No of instances created till now : ");
System.out.println(no_of_objects);
}
}
Sum of two integer values :3
示例 2:
Java
// Java Program to Illustrate Method Calling
// Via Different Ways of Calling a Method
// Importing required classes
import java.io.*;
// Class 1
// Helper class
class Test {
public static int i = 0;
// Constructor of class
Test()
{
// Counts the number of the objects of the class
i++;
}
// Method 1
// To access static members of the class and
// and for getting total no of objects
// of the same class created so far
public static int get()
{
// statements to be executed....
return i;
}
// Method 2
// Instance method calling object directly
// that is created inside another class 'GFG'.
// Can also be called by object directly created in the
// same class and from another method defined in the
// same class and return integer value as return type is
// int.
public int m1()
{
// Display message only
System.out.println(
"Inside the method m1 by object of GFG class");
// Calling m2() method within the same class.
this.m2();
// Statements to be executed if any
return 1;
}
// Method 3
// Returns nothing
public void m2()
{
// Print statement
System.out.println(
"In method m2 came from method m1");
}
}
// Class 2
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating object of above class inside the class
Test obj = new Test();
// Calling method 2 inside main() method
int i = obj.m1();
// Display message only
System.out.println(
"Control returned after method m1 :" + i);
// Call m2() method
// obj.m2();
int no_of_objects = Test.get();
// Print statement
System.out.print(
"No of instances created till now : ");
System.out.println(no_of_objects);
}
}
Inside the method m1 by object of GFG class
In method m2 came from method m1
Control returned after method m1 :1
No of instances created till now : 1
上述程序的控制流程如下:
方法调用的内存分配
方法调用是通过堆栈实现的。每当调用一个方法时,就会在堆栈区域内创建一个堆栈帧,之后,传递给该被调用方法的参数以及要由该被调用方法返回的局部变量和值存储在该堆栈帧中,并且当被调用方法的执行完成时,分配的堆栈帧将被删除。有一个堆栈指针寄存器跟踪堆栈的顶部,并相应地进行调整。
相关文章:
- Java严格按值传递
- Java中的方法重载和空错误
- 我们可以重载或覆盖Java中的静态方法吗?
- Java测验