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

问题描述 投票:0回答:1

所以我对静态和非静态调用的理解:

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

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

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

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

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

下面的代码:

import java.util.Scanner;

公共类Main {

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

}

java parameters return-value static-methods non-static
1个回答
0
投票

非静态方法是您在实例上调用的方法,例如,当您创建新的AreaCalculator()时。静态方法是可以调用的方法,而无需引用AreaCalculator()。

© www.soinside.com 2019 - 2024. All rights reserved.