Java 中此语法的等价物是什么?

What is the equivalent of this syntax in Java?

只是一个关于如何在 c++ 和 Java 之间转换某行代码的快速问题。我一直在学习神经网络,并且开始用我最熟悉的语言 Java 编写自己的神经网络。到目前为止,将代码从 C++ 转换为 Java 非常简单,但是我 运行 遇到了一个小问题。我对如何将这一特定代码行转换为 Java 等价物感到困惑,而且我无法通过搜索找到与此问题相关的任何内容。

原代码为:

Struct SNeuron {
   //the number of inputs into the neuron

   int m_NumInputs;
   //the weights for each input
   vector<double> m_vecWeight;
   //ctor
   SNeuron(int NumInputs);
};

我的代码是:

public class SNeuron {

public int m_NumInputs; // the number of inputs into the neuron
public ArrayList<Double> m_vecWeight = new ArrayList<Double>(); // the weights for each input
// ctor

我的问题是,我该如何转换:

SNeuron(int NumInputs);

转换成 Java 等价物?根据我的阅读,Structs 似乎不是 Java 使用的功能,所以我只是在努力理解这行代码在其使用的上下文中到底做了什么。

在 C++ 中,SNeuron(int NumInputs); 是采用 int 的构造函数的声明,它包含在 class 声明中。

您不会在 Java 中这样做 - 实际上,所有构造函数和与此相关的所有函数都内联在 class 声明中。也就是说

SNeuron(int NumInputs); // within the class declaration
SNeuron::SNeuron(int NumInputs) : m_NumInputs(NumInputs){} // In a translation unit

映射到

SNeuron(int NumInputs) {
   m_NumInputs = NumInputs;
}

但请注意,将 m_ 用于 Java 字段 是特殊的。

public class SNeuron 
{

// the number of inputs into the neuron

public int m_NumInputs;

// the weights for each input

public List<Double> m_vecWeight = new ArrayList<Double>();

// ctor
SNeuron(int NumInputs) {
   m_NumInputs = NumInputs;
}

鉴于代码中的注释,我很确定等同于:

public class SNeuron {
    public final double[] weights;

    public SNeuron(int numInputs) {
        weights = new double[numInputs];
    }
}

你真的不想使用 List<Double>,它会慢得多并且占用更多内存 - 这样一个列表中的每个双精度数都会成为一个完整的对象,并带有所有相关的开销。