我有2个静态和非静态调用的示例。我对手术的理解正确吗?

所以我如何理解静态和非静态调用:

如果要调用方法,传递值和返回值而不创建Class的新对象,请使用static。

如果要在创建类的新对象后调用方法,传递值和返回值,请不要使用static。

我创建了两个代码段。其中一个已被注释掉,但您会在AreaCalculator类中看到,静态引用与在主文件中调用的被注释掉的方法一致。

在此之上我的问题是,在什么情况下调用静态或非静态会是有益的?如果我创建了一堆非静态类型和基元,那么我将能够在新对象下使用它们,而不会影响类中这些初始化的原始值,对吗?

相反,如果它们是静态变量,则在执行设置工作时处理数据时会在类中修改值(因为不存在对象)?

下面的代码:

import java.util.Scanner;

公共班级主要{

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()));

    //-----------------------------------------


}

}

公共类AreaCalculator {

 /*static*/ double area (double areainput) {
    return Math.PI * (Math.pow(areainput, 2));

}

 /*static*/ double perimeter (double perimeterinput) {
    return Math.PI * (perimeterinput * 2);
} 

}