我有 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?