【发布时间】:2018-01-08 21:08:36
【问题描述】:
我一直在关注 Pluralsight 上的一些基本 Java 教程,但我有点不太明白导师试图解释什么,他似乎倾向于快速完成一些练习而且有点难以理解。
我有 2 个类,一个“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 实例,调用的是“方程式”并指定我们将传递 4 个数组(我们稍后会这样做)。
我要略过...
我不太明白这里发生了什么:
public static MathEquation create
我知道我在声明一个方法 (?),它是公共的,这意味着它可以从任何地方访问 (?),我还不知道静态是什么意思。它被称为“创建”,但我不知道 MathEquation 在此声明中扮演什么角色。
我认为我了解这个方法的主体中发生了什么,
MathEquation equation = new MathEquation();
equation.setValue1(value1);
equation.setValue2(value2);
equation.setOpCode(opCode);
return equation;
我们正在创建另一个 MathEquation 实例并将其命名为 equation。然后传递声明“create”时指定的参数。
我不认为我完全理解 return 语句是如何工作的,为什么它会返回整个类(等式)?
查看“for”循环。我看到它使用了之前返回的“方程式”,但我不明白这里的语法:
MathEquation equation: equations
我想我明白最后一行了..
System.out.println(equation.getResult());
我们只是打印 getResult,它只是 MathExecution 类中的一个公共方法,它返回一个私有变量的值。
如果有人能提供一点关于正在发生的事情的见解,我将不胜感激。我重新观看了视频并尝试使用代码,但我似乎无法理解它是如何连接在一起的。
或者,如果你能在回到这个例子之前指出我可能获得更好理解的任何资源,那也是完美的。
非常感谢您的阅读。
【问题讨论】:
-
我会看看我是否可以回答你的一些问题,但如果你有这种问题,你真的应该从更基本的东西开始。试试官方Java Tutorials。您正在混淆非常基本的术语和语法(这在您刚刚开始时是可以理解的),因此很难从此类示例开始。
-
docs.oracle.com/javase/tutorial 从顶部开始,逐步完成
-
太多问题集中在一处 - 你会被否决。如果您一次查看每一行中的代码,您会得到一些澄清。 static 意味着您可以在不实例化类的情况下访问该成员。 create 是一种工厂模式方法,用于创建方程式的实例 - 您需要返回对该方程式的引用,以便稍后您可以调用它的 execute 方法。
-
Jason 的观点可能很好。如果您分别发布这些问题,您可能还会发现大多数问题都是重复的。也就是说,您可以通过在 Google 中输入术语并搜索结果来找到答案。首先搜索答案是基本的,使用几个不同的搜索词,任何软件工程师都应该首先尝试。