理解教程代码需要一些帮助:Java类构造函数/初始化器
我一直在关注Pluralsight上的一些基本Java教程,我不太理解导师试图解释的内容,他似乎倾向于快速复习一些练习,而且有点难以理解 我有两个类,一个“Main”和一个“MathExecution”。我完全理解MathExecution中正在发生的事情,但是我不太理解Main的某些方面,我将对此进行介绍。我将在下面粘贴这两个类: Main.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) { //
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
),因此这是您唯一的选择。实际上,它通过返回对整个对象的引用来返回“整个对象”
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());