学习用Java编写代码还是仅仅理解代码?
很抱歉问你这个新手问题,但我真的需要理解这一点 我已经尝试过无数次学习编程。特别是java,因此我可以继续进行android/ios游戏开发。事实是,经过几天的自学,我每次都放弃了 我一生中学习任何东西都没有遇到过困难,事实上,我学得很快,而且我的常识非常丰富。然而,由于某种原因,编程已经挑战了我的极限 我注意到,无论Java变得多么困难和复杂,我仍然理解我正在阅读的代码及其功能。但至于我自己写下来?即使它打了我一耳光,我也办不到 话虽如此,我还是想问你一个问题。。。我真的需要知道如何把每一个代码都背下来吗?还是阅读和理解代码就足以实现我的目标?我知道有一些游戏引擎,比如Unity3d,是专门为这些目的开发的。我甚至看到了内置在Unity3d中的android演示游戏,看起来令人惊讶。但很难相信,每一个游戏/应用程序开发人员都会坐下来为它写下全部该死的代码 我错过了什么?这对我来说真的没什么意义学习用Java编写代码还是仅仅理解代码?,java,android,ios,iphone,unity3d,Java,Android,Ios,Iphone,Unity3d,很抱歉问你这个新手问题,但我真的需要理解这一点 我已经尝试过无数次学习编程。特别是java,因此我可以继续进行android/ios游戏开发。事实是,经过几天的自学,我每次都放弃了 我一生中学习任何东西都没有遇到过困难,事实上,我学得很快,而且我的常识非常丰富。然而,由于某种原因,编程已经挑战了我的极限 我注意到,无论Java变得多么困难和复杂,我仍然理解我正在阅读的代码及其功能。但至于我自己写下来?即使它打了我一耳光,我也办不到 话虽如此,我还是想问你一个问题。。。我真的需要知道如何把每一个代
所以我想我想问的主要问题是。。。。我需要学习如何把每一个代码都背下来,并理解它的含义吗?或者,理解代码及其功能就足以实现我的目标了吗?如果是这样的话(幸运的是,可能不会是:),那么从这里开始的最佳方式是什么 谢谢,如有任何回复,我们将不胜感激 让我摆脱痛苦:) 阿里斯 我真的需要知道如何把每一个代码都背下来吗 我不会的。能够从头开始编写代码更有用 还是阅读和理解代码就足以实现我的目标 取决于你的目标,但我对此表示怀疑 我知道有一些游戏引擎,比如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