我有 2 个静态和非静态调用的示例。我对操作的理解正确吗?
I have 2 examples of static and non static calling. Is my understanding of the operation correct?
那么我是如何理解静态和非静态调用的:
如果您在不创建 Class 的新对象的情况下调用方法、传递值和返回值,请使用静态。
如果你是在class的新对象创建后调用方法、传递值和返回值,不要使用static。
我创建了两段代码。一个被注释掉了,但您会在 class AreaCalculator 中看到,静态引用与主文件中调用的被注释掉的方法一致。
除此之外,我的问题是在什么情况下调用静态或非静态会有好处?如果我创建了一堆非静态类型和基元,那么我将能够在新对象下使用它们而不影响 class 中那些初始化的原始值,对吗?
相反的情况是,如果它们是静态变量,则在执行设置它们的工作时操作数据时,将在 class(因为不存在对象)中修改值?
代码如下:
import java.util.Scanner;
public class 主 {
public static void main(String[] args) {
//-----------------------------------------
//Runs a For loop to get input, store in array, display results
//ForLoopInputArray.looping();
//-----------------------------------------
//-----------------------------------------
//Learning to return values when passing parameters
// Area/Perimeter Calculator Methods
Scanner apinput = new Scanner (System.in);
AreaCalculator areatest = new AreaCalculator();
//Using a static method
//System.out.println("Enter a number to calculate the area: ");
//System.out.println(AreaCalculator.area(apinput.nextDouble()));
//System.out.println("Enter a number to calculate the Perimeter: ");
//System.out.println(AreaCalculator.perimeter(apinput.nextDouble()));
//using an object to perform the same task
System.out.println("Enter a number to calculate the area: ");
System.out.println(areatest.area(apinput.nextDouble()));
System.out.println("Enter a number to calculate the Perimeter: ");
System.out.println(areatest.perimeter(apinput.nextDouble()));
//-----------------------------------------
}
}
public class 面积计算器 {
/*static*/ double area (double areainput) {
return Math.PI * (Math.pow(areainput, 2));
}
/*static*/ double perimeter (double perimeterinput) {
return Math.PI * (perimeterinput * 2);
}
}
非静态方法是您通过实例调用的方法,例如,当您创建一个新的 AreaCalculator()
时。静态方法是您可以在不引用 AreaCalculator()
的情况下调用的方法。
这可以帮助你多一点:What is the difference between a static method and a non-static method?
那么我是如何理解静态和非静态调用的:
如果您在不创建 Class 的新对象的情况下调用方法、传递值和返回值,请使用静态。
如果你是在class的新对象创建后调用方法、传递值和返回值,不要使用static。
我创建了两段代码。一个被注释掉了,但您会在 class AreaCalculator 中看到,静态引用与主文件中调用的被注释掉的方法一致。
除此之外,我的问题是在什么情况下调用静态或非静态会有好处?如果我创建了一堆非静态类型和基元,那么我将能够在新对象下使用它们而不影响 class 中那些初始化的原始值,对吗?
相反的情况是,如果它们是静态变量,则在执行设置它们的工作时操作数据时,将在 class(因为不存在对象)中修改值?
代码如下:
import java.util.Scanner;
public class 主 {
public static void main(String[] args) {
//-----------------------------------------
//Runs a For loop to get input, store in array, display results
//ForLoopInputArray.looping();
//-----------------------------------------
//-----------------------------------------
//Learning to return values when passing parameters
// Area/Perimeter Calculator Methods
Scanner apinput = new Scanner (System.in);
AreaCalculator areatest = new AreaCalculator();
//Using a static method
//System.out.println("Enter a number to calculate the area: ");
//System.out.println(AreaCalculator.area(apinput.nextDouble()));
//System.out.println("Enter a number to calculate the Perimeter: ");
//System.out.println(AreaCalculator.perimeter(apinput.nextDouble()));
//using an object to perform the same task
System.out.println("Enter a number to calculate the area: ");
System.out.println(areatest.area(apinput.nextDouble()));
System.out.println("Enter a number to calculate the Perimeter: ");
System.out.println(areatest.perimeter(apinput.nextDouble()));
//-----------------------------------------
}
}
public class 面积计算器 {
/*static*/ double area (double areainput) {
return Math.PI * (Math.pow(areainput, 2));
}
/*static*/ double perimeter (double perimeterinput) {
return Math.PI * (perimeterinput * 2);
}
}
非静态方法是您通过实例调用的方法,例如,当您创建一个新的 AreaCalculator()
时。静态方法是您可以在不引用 AreaCalculator()
的情况下调用的方法。
这可以帮助你多一点:What is the difference between a static method and a non-static method?