Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解教程代码需要一些帮助:Java类构造函数/初始化器_Java_Class_Methods - Fatal编程技术网

理解教程代码需要一些帮助:Java类构造函数/初始化器

理解教程代码需要一些帮助:Java类构造函数/初始化器,java,class,methods,Java,Class,Methods,我一直在关注Pluralsight上的一些基本Java教程,我不太理解导师试图解释的内容,他似乎倾向于快速复习一些练习,而且有点难以理解 我有两个类,一个“Main”和一个“MathExecution”。我完全理解MathExecution中正在发生的事情,但是我不太理解Main的某些方面,我将对此进行介绍。我将在下面粘贴这两个类: Main.java: public class Main { public static void main(String[] args) { //

我一直在关注Pluralsight上的一些基本Java教程,我不太理解导师试图解释的内容,他似乎倾向于快速复习一些练习,而且有点难以理解

我有两个类,一个“Main”和一个“MathExecution”。我完全理解MathExecution中正在发生的事情,但是我不太理解Main的某些方面,我将对此进行介绍。我将在下面粘贴这两个类:

Main.java:

public class Main {

    public static void main(String[] args) {

//        double[] value1 = {100.0d, 18.0d, 30.0d,  27.0d};
//        double[] value2 = {50.0d, 2.0d, 15.0d, 99.0d};
//        char[] opCodes = {'d', 'm', 's', 'a'};
//        double[] result = new double [opCodes.length];

        MathEquation[] equations = new MathEquation[4];
        equations[0] = create(100.00d, 50.0d, 'd');
        equations[1] = create(25.0d, 92.0d, 'a');
        equations[2] = create(225.0d, 17.0d, 's');
        equations[3] = create(11.0d, 3.0d, 'm');


        for (MathEquation equation: equations){
            equation.execute();
            System.out.print("Result: ");
            System.out.println(equation.getResult());
        }

    }

    public static MathEquation create(double value1, double value2, char opCode){
        MathEquation equation = new MathEquation();
        equation.setValue1(value1);
        equation.setValue2(value2);
        equation.setOpCode(opCode);

        return equation;
    }
}
MathExecution.java:

public class MathEquation {


    private double value2;
    private double value1;
    private char opCode;
    private double result;

    public double getValue1() {return value1;}
    public double getValue2() {return value2;}
    public double getOpCode() {return opCode;}
    public double getResult() {return result;}

    public void setValue1(double value1) {this.value1=value1;}
    public void setValue2(double value2) {this.value2=value2;}
    public void setOpCode(char opCode) {this.opCode=opCode;}






    public void execute(){

        switch (opCode){
            case 'd':
                result = value2 != 0.0d ? value1 / value2: 0.0;
                break;

            case 'm':
                result = value1 * value2;
                break;

            case 's':
                result = value1 - value2;
                break;

            case 'a':
                result = value1 + value2;
                break;

            default:
                System.out.println("Something Broke!");
                result = 0.00d;
                break;
        }

    }
}
我不太明白(我想我也不明白)这里到底发生了什么:

 MathEquation[] equations = new MathEquation[4];
在查看它时,我假设我们正在创建MathEquation的一个新实例,调用的是“equations”,并指定要传递4个数组(我们稍后会这样做)

我要向前跳一点

我不太明白这里发生了什么:

public static MathEquation create
我知道我在声明一个方法(?),它是公共的,这意味着它可以从任何地方访问(?),我还不知道静态是什么意思。它被称为“创建”,但我不知道MathEquation在这个声明中扮演什么角色

我想我知道这个方法的主体是什么

MathEquation equation = new MathEquation();
equation.setValue1(value1);
equation.setValue2(value2);
equation.setOpCode(opCode);

return equation;
我们正在创建MathEquare的另一个实例,并将其命名为Equare。然后传递声明“create”时指定的参数

我认为我不完全理解return语句是如何工作的,为什么它返回整个类(等式)

查看“for”循环。我看到它使用了之前返回的“等式”,但我不理解这里的语法:

MathEquation equation: equations
我想我明白最后一句话了

System.out.println(equation.getResult());
我们正在打印getResult,它只是MathExecution类中的一个公共方法,它返回一个私有变量的值

如果有人能提供一些关于正在发生的事情的见解,我将不胜感激。我重新观看了视频,并尝试使用代码,但我似乎无法理解这两者是如何联系在一起的

或者,如果您能为我指出任何资源,在返回到这个示例之前,我可能会对这些资源有更好的理解,那也将是完美的

非常感谢您的阅读。

以下是我的答案:

  • 数组创建
  • 我不太明白(我想我也不明白)这里到底发生了什么:

     MathEquation[] equations = new MathEquation[4];
    
    当看到它时,我假设我们正在创建一个新的MathEquation实例

    否,该代码创建了一个包含四个引用的数组,并调用该数组
    等式
    。创建一个对象(数组),其索引都设置为
    null

  • 方法声明
  • 我不太明白这里发生了什么:

    public static MathEquation create
    
    我知道我在声明一个方法(?),它是公共的,这意味着它可以从任何地方访问(?),我还不知道静态是什么意思

    这是超级基础,你应该再看一遍教程<代码>静态表示方法(或字段)未附加到类的任何实例。相反,它对系统中的所有对象都是通用的(全局的)。
    MathEquation
    是方法的返回类型:它返回一个
    MathEquation
    对象

  • 方法调用
  • 这里的东西也是超基本的,它只是调用一个方法

    MathEquation equation = new MathEquation();
    equation.setValue1(value1);
    equation.setValue2(value2);
    equation.setOpCode(opCode);
    
    return equation;
    
    我们正在创建MathEquare的另一个实例,并将其命名为Equare。然后传递声明“create”时指定的参数。我认为我不完全理解return语句是如何工作的,为什么它返回整个类(等式)

    创建另一个
    MathEquation
    实例是正确的。正在传递参数。。。是的,但更简单地说,它只是对刚刚创建的对象调用方法。它使用调用
    create
    时给定的参数,当然。return语句只能返回“整个类”或原语(如
    int
    char
    ),因此这是您唯一的选择。实际上,它通过返回对整个对象的引用来返回“整个对象”

  • 每人
  • 查看“for”循环。我看到它使用了之前返回的“等式”,但我不理解这里的语法:

    MathEquation equation: equations
    
    这只是每个循环的
    ,请阅读文档:

  • 印刷品
  • 我想我明白最后一句话了

    System.out.println(equation.getResult());
    
    我们正在打印getResult,它只是MathExecution类中的一个公共方法,它返回一个私有变量的值


    正确。

    我会尽量用简单的话解释。如果你发现一个你不知道或不理解的单词,请在中查找


    作为基础,我们将首先查看
    create
    方法。第一行(签名)说的是,你有一个可以从任何地方调用的方法(
    public
    ),不需要一个实例来调用它(
    static
    ,我想你应该查一下,我现在想不出一个简单的解释),返回你一个
    MathEquation
    ,叫做
    create
    ,需要三个
    参数作为输入来创建返回值

    public static MathEquation create(double value1, double value2, char opCode)
    
    然后,该方法继续:

        // take the MathEquation class and create an instance by using the constructor
        MathEquation equation = new MathEquation();
    
        // give the equation the necessary values it needs to be executed later
        equation.setValue1(value1);
        equation.setValue2(value2);
        equation.setOpCode(opCode);
    
        // return that equation to the caller of the method for them to use
        return equation;
    }
    

    好的,那么主方法中发生了什么

    首先,我们创建一个数组(类似于一个列表),该数组可以容纳4个
    MathEquation
    s,称为
    equations
    。现在它是空的

        MathEquation[] equations = new MathEquation[4];
    
    这就是为什么我们要在这里填。我们使用上面的
    create
    方法获得
    MathEquation
    的4个实例,并将它们放入数组的空插槽(0-3)

        equations[0] = create(100.00d, 50.0d, 'd');
        equations[1] = create(25.0d, 92.0d, 'a');
        equations[2] = create(225.0d, 17.0d, 's');
        equations[3] = create(11.0d, 3.0d, 'm');
    
    然后我们取数组,使用
    for
    循环查看其中的每个方程,然后做一些事情。
    for
    循环的内容如下:“对于方程中的每个方程”

    对于方程,我们要求它自己求解。这将结果存储在equation对象中
        for (MathEquation equation: equations) {
    
            equation.execute();
            System.out.print("Result: ");
            System.out.println(equation.getResult());