学习用Java编写代码还是仅仅理解代码?

学习用Java编写代码还是仅仅理解代码?,java,android,ios,iphone,unity3d,Java,Android,Ios,Iphone,Unity3d,很抱歉问你这个新手问题,但我真的需要理解这一点 我已经尝试过无数次学习编程。特别是java,因此我可以继续进行android/ios游戏开发。事实是,经过几天的自学,我每次都放弃了 我一生中学习任何东西都没有遇到过困难,事实上,我学得很快,而且我的常识非常丰富。然而,由于某种原因,编程已经挑战了我的极限 我注意到,无论Java变得多么困难和复杂,我仍然理解我正在阅读的代码及其功能。但至于我自己写下来?即使它打了我一耳光,我也办不到 话虽如此,我还是想问你一个问题。。。我真的需要知道如何把每一个代

很抱歉问你这个新手问题,但我真的需要理解这一点

我已经尝试过无数次学习编程。特别是java,因此我可以继续进行android/ios游戏开发。事实是,经过几天的自学,我每次都放弃了

我一生中学习任何东西都没有遇到过困难,事实上,我学得很快,而且我的常识非常丰富。然而,由于某种原因,编程已经挑战了我的极限

我注意到,无论Java变得多么困难和复杂,我仍然理解我正在阅读的代码及其功能。但至于我自己写下来?即使它打了我一耳光,我也办不到

话虽如此,我还是想问你一个问题。。。我真的需要知道如何把每一个代码都背下来吗?还是阅读和理解代码就足以实现我的目标?我知道有一些游戏引擎,比如Unity3d,是专门为这些目的开发的。我甚至看到了内置在Unity3d中的android演示游戏,看起来令人惊讶。但很难相信,每一个游戏/应用程序开发人员都会坐下来为它写下全部该死的代码

我错过了什么?这对我来说真的没什么意义


所以我想我想问的主要问题是。。。。我需要学习如何把每一个代码都背下来,并理解它的含义吗?或者,理解代码及其功能就足以实现我的目标了吗?如果是这样的话(幸运的是,可能不会是:),那么从这里开始的最佳方式是什么

谢谢,如有任何回复,我们将不胜感激

让我摆脱痛苦:)

阿里斯

我真的需要知道如何把每一个代码都背下来吗

我不会的。能够从头开始编写代码更有用

还是阅读和理解代码就足以实现我的目标

取决于你的目标,但我对此表示怀疑

我知道有一些游戏引擎,比如Unity3d,是专门为这些目的开发的

是的,很多

我甚至看到了内置在Unity3d中的android演示游戏,看起来令人惊讶。但很难相信,每一个游戏/应用程序开发人员都会坐下来为它写下全部该死的代码

很可能不是。你也不必

我错过了什么

这需要经验。经过二十年的编码,我写的代码比五年前要好得多

这对我来说真的没什么意义

你还有很多东西要学。我有两个学位,但这仅仅是我二十年实践经验的开始


所以我想我想问的主要问题是。。。。我需要学习如何把每一个代码都背下来,并理解它的含义吗

不,记忆不是很有用。能够自己编写新代码会更好。这需要大量的练习

或者,理解代码及其功能就足以实现我的目标了吗

你的目标是什么

从这里开始的最佳方式是什么

阅读此链接,不要对自己太苛刻


期望一直在学习。新技术的发展速度并没有放缓,而且已经超过了一个人的学习能力。你只知道你需要知道的,你不可能知道全部。你可能认为你了解正在发生的一切,但直到你真正体验到一个错误,
null
意外位置的值和比赛条件,你不会明白为什么事情会这样做的原因。如果您可以有效地使用基于它的库/应用程序,那么您可能没有必要学习自己编写代码,但您不会真正理解它在后台做什么。

我也是一名初学者,但我给您提供我个人的意见。在开始时,最好从自己的代码开始,过一段时间,当您了解自己在做什么时,您可以开始复制其他部分的代码,但您需要知道如何为这些代码或何时使用这些代码

至少我自己我不知道所有要连接的代码,比如数据库,但我有自己的代码,所以每当我想连接时,我都会转到代码,复制它,并更改我知道需要更改的内容


因此,正如我在这里所说的,您应该尝试至少一次开发代码,以完全了解其工作原理,然后再从其他项目中重用代码。

也许您在学习编程时采取了过于形式化的方法。我对那些典型的教科书感到厌烦

1. History of Java
2. Variables
3. For statement
...

只要想想对自己有用的东西,比如一个小安卓应用程序,就可以在路上了解你需要什么

首先尝试编写简单的程序。你写的代码越多,你就越能理解它。没有人能仅仅通过阅读书籍或编写代码来学习编程。编程一开始看起来很难,但最终它变成了第二天性。 永远不要记住代码。没有什么好结果。只需了解特定类的功能,IDe将帮助您编写方法和属性。现在几乎所有的IDE都有自动完成功能。 不要为在应用程序中看到的代码数量而烦恼。其中很多都是由游戏引擎自动生成的,不过你应该理解它们的意思和作用。 举个例子,这是我制作的一个简单转换器应用程序的源代码。您可以看到这里有多少代码,但对于Netbeans IDE,我刚刚编写了两行代码,所有其他代码都是自动生成的

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Home;

/**
 *
 * @author Windows8
 */
public class CelsiusConverterGUI extends javax.swing.JFrame {

    /**
     * Creates new form CelsiusConverterGUI
     */
    public CelsiusConverterGUI() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        tempTextField = new javax.swing.JTextField();
        celsiusLabel = new javax.swing.JLabel();
        convertButton = new javax.swing.JButton();
        fahrenheitLabel = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Celsius Converter");

        celsiusLabel.setText("Celsius");

        convertButton.setText("Convert");
        convertButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                convertButtonActionPerformed(evt);
            }
        });

        fahrenheitLabel.setText("Fahrenheit");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(tempTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(celsiusLabel))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(convertButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(fahrenheitLabel)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {convertButton, tempTextField});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(tempTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(celsiusLabel))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(convertButton)
                    .addComponent(fahrenheitLabel))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void convertButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here:
        //Parse the celsius input into double
        int tmpFah = (int) ((Double.parseDouble(tempTextField.getText())) * 1.8 + 32);
        fahrenheitLabel.setText(tmpFah + " Fahrenheit");
    }                                             

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(CelsiusConverterGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(CelsiusConverterGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(CelsiusConverterGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(CelsiusConverterGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new CelsiusConverterGUI().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JLabel celsiusLabel;
    private javax.swing.JButton convertButton;
    private javax.swing.JLabel fahrenheitLabel;
    private javax.swing.JTextField tempTextField;
    // End of variables declaration                   
}
/*
*要更改此模板,请选择工具|模板
*然后在编辑器中打开模板。
*/
打包回家;
/**
*
*@author Windows8
*/
公共类CelsiusConverterGUI ex