教材学习中的问题和解决过程
根据自己的理解,每章提出一个问题
第一章:课本中介绍的JDK安装时在windows系统下的安装,而我们学习的是在Linux系统下的安装,运用Linux系统学习编程(尤其是JAVA)比运用windows系统学习编程的优势有哪些?
第二章:第二章提到可在编程时使用import偷懒,当同一包下使用多个类,多次使用import,程序该如何区分和识别不同的import,在后续的编程中又该如何使用import?
第三章:Java中的基本类型其中有布尔,这是以前学习C语言时未接触到的,并且Java的switch可用于Enum,也是C语言学习未接触到的,最后,Java中的类型定义和各种循环语句与C语言相比有何异同?
第四章:在Java编程中,通常使用分数和指数来表示浮点数。如果要求精确度,不用==直接比较浮点数的运算结果,若用浮点数直接表示,会出现什么错误?
第五章:Java语言中,为什么要对对象进行封装,并且何谓封装。如果不进行封装,会产生哪些不妥之处?
第六章:在面向对象中,什么是多态?并且在Java中,子类与父类的继承之间,存在哪些特定的规则?
第七章:什么是接口,接口如何定义行为,在编程过程中,我们应该如何应用接口?
第八章:Java中的所有错误都会被包装为对象,那么这些对象应该如何被抛出?并且抛出后对程序会有什么样的影响,又该如何添加正确的语句?
第九章:Collection和Map在Java程序的编写中分别起什么作用,它们之间存在什么联系?
第十章:Java语言中的输入和输出与C语言的输入和输出有什么不同,串流与输入和输出有什么关系,Java的字符输入和输出有什么特定的规则?
第十一章:线程具有优先权,当线程的优先权相同时,CPU将如何执行,CPU的排班指的是什么?
第十二章:在Java中引入Lambda的同时,需要重用现有的API,这里的重用指的是什么?Lambda的表达式在程序的编辑中起什么作用?
第十三章:机器程序中的时间与日期和我们印象中的有什么不同,时间和API有什么关系?它是如何定义并使时间和日期在程序的驱使下跑动的?
第十四章:NIO使用频道来衔接数据节点,这里所谓的频道指的是什么?NIO和NIO2能如何优化我们的程序或系统?
第十五章:日志在编程中起什么作用,与我们通常意义上的日志有什么区别?日志与API存在什么样的联系?
第十六章:Java的程序与数据库有什么关联?它是如何通过JDBC连接数据库的?
第十七章:是否每一个Java文档都会有与之对应的class文档吗?class文档与原文档有什么不同?Class文档中建立的对象对原对象有什么意义?
第十八章:泛型所指的是什么?所谓的枚举,究竟是在枚举什么?程序的注释如何实现它的自定义?
教材学习内容总结
对教材第一章和第二章的学习
第一章:
对于第一章的学习,首先了解的是Java的诞生以及版本的演进直至今日。首先,Java的由来是工程师们喝着咖啡讨论出来的,所以以“.java”结束的文档,图标便会成一杯咖啡(自己对于图标的理解)。它是一类为了节约资源而作的设计语言,也是程序语言的标准规范。它最初是用来攥写Star7上应用程序的程序语言。随着全球信息网的兴起,它便成为网页互动的代表,其主要的优势体现在它的跨平台语言设计上。Java最初以JDK的名称发表,将J2SE作为其平台名称。随着版本的不断演化,到了2004年,有了一个跳跃式的版本,不仅实现了对语法的简化,增加了泛型、枚举、注释等功能,使得Java成为一款较为完善的计算机语言。
之后学习的便是Java的三大平台。首先了解的是最基本的平台——Java SE。它分为JVM、JRE、JDK和Java四个部分。JVM是Java语言可以跨平台的保证,Java在编译时被翻译成中介格式的位码,JVM会将位码翻译成相依雨平台的机器码,所以,不同的平台必须安装专属的JVM,使得Java成为了跨平台的机器语言。而JRE是Java的执行环境,在装有JRE的计算机上,可以直接调用Java SE API中的链接库,无需在程序中再包装链接。JDK则主要是使Java编译的程序语言编译成“.class”文档,使“.class”文档可直接被调用并执行。Java EE平台主要适用于开发分布式、多层次、以组件为基础、以Web为基础的应用程序。而Java ME是最小的一个平台,主要应用于消费性电子产品或嵌入式系统,如手机和股票机等,并可开发出Java游戏和日历等程序。并且Java EE和JER都是建立在JVM的基础上的。
最后是JDK的下载和安装,课本上介绍的是在windows系统下的JDK安装,我们实践的是在Linux系统下的安装,主要学习了应用系统终端安装程序。
第二章:
第二章开始了对Java原始码的攥写。攥写方式是先建立一个文本文档,将代码输入后,以“xxx.java”来命名文件。在Linux系统下,用终端寻找这个文件并执行,这时,在同一个文件夹下,便会产生一个命名为“xxx.class”的文件(class是用来定义类的关键词),之后程序将会在终端下运行。对于Java语言的编写,我们必须注意每个字母的大小写和半角空格和Tab字符的使用,否则程序的运行将会出现问题,并且有时难以察觉问题所在之处。所以我们需要非常细心地编写Java程序代码。接着便是对PATH的了解,系统会根据PATH的信息在其路径中寻找java(.exe)程序,并可以在PATH中设定工具程序的路径信息,使系统在PATH中找到要执行的指令。所以在安装了多个JDK和JRE的系统中,确定PATH信息是非常重要的动作。并且执行一个java程序,需要JVM通过CLASSPATH指定可执行文件(.class)的路径信息寻找文档并执行。且javac编译程序时,也需要通过CLASSPATH指定的路径来寻找.class文档。
原始码和位码文档与SOURCEPATH也是理解程序编译的重要部分。原始码和位码文档是放在同一位置下的,在程序编译时,会先搜索-sourcepath指定的文件夹,主要是确定是否需要编译程序中的Main类和Console类,为程序的编译减少的不少的时间和资源。之后是package管理类的使用。它主要应用于对实体文档和类名称上的分类管理。原始码和位码文档都需要放置在与package所定义名称层级相同的文件夹层级中,并且要在包间可以直接使用的类或方法必须声明为public。接着,为了使程序简化或是偷懒,我们便可以使用import。在编程中如果需要用到很多的类名称,系统将会自动寻找import定义过的名称,可以让我们少打一些程序代码。但是当java.util和Arrays结合在一起时,程序便无法分清cc.openhome.Arrays和java.util.Arrays的使用,这时候,我们就需要明确的将程序打完整。
在程序编译时,必须指定正确的-sourcepath、-cp等自变量,执行程序必须使用完全吻合的名称,如果使用IDE代劳一些原始码文档与位码资源管理工作,将使我们的效率大大提高。
代码调试中的问题和解决过程
JDK的安装与调试
下载jdk-8u121,并对JDK进行相应的解压和安装。
JDK的测试
代码托管
git代码托管测试与上传
在git的上传过程中出现此问题。
解决方法,参考20155202张旭同学的博客中的方法解决了此问题。
【代码托管】 (https://git.oschina.net/Lee.X/JAVAma)
git代码托管上传完成。
其他(感悟、思考等,可选)
经过一个星期对JAVA和Linux终端的初步了解、学习和实践,为以后JAVA的学习做好了一套和软件和硬件的准备,同时也对JAVA语言的由来有了一个大概的认识。跟以前学习C语言相比,这次的JAVA学习的准备要充分得多。出于JAVA程序编写的复杂性考虑,加入更多的学习时间和精力,做好更加充分的准备是很有必要的。在现在有了一套系统性的学习方式之后,以后的学习中应当更加认真,尽自己的所能完成好每一次作业。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 6/200 | 1/4 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |