20155321 2016-2017-2 《Java程序设计》第一周学习总结
学习目标
- [√]了解Java基础知识
- [√]了解JVM、JRE与JDK,并下载、安装、测试JDK
- [√]了解PATH、CLASSPATH、SOURCEPATH的作用并会设置
- [√]初步使用IDE(推荐IDEA),会编译、运行、调试简单的Java程序
学习任务
浏览教材,根据自己的理解每章提出一个问题
- 第一章 Java平台概述 学习Java的历史对Java的学习有什么帮助?
- 第二章 从JDK到IDE 为什么Java的学习需要IDE?
- 第三章 基础语法:这部分Java的许多地方与C较为相似,那么关于这部分两种语言的主要区别是什么?学习时应更注意学习哪些方面?
- 第四章 认识对象:为什么要打包基本类型?主要目的是什么?
- 第五章 对象封装:对象的封装与打包之间有什么联系与区别?封装的目的又是什么?
- 第六章 继承与多态:继承是否指若B在A的基础上多一些功能时,B可继承A,这样使编程没那么繁琐?继承与多态有什么关系?
- 第七章 接口与多态:接口与继承之间是什么联系?
- 第八章 异常处理:异常处理是否是指只要程序偏离了正常轨道(不管是什么错误)就被Java当作异常进行处理?这种处理方式的好处是什么?
- 第九章 Collection与Map:为什么要单独学习Collection与Map这两个类?对其他类的学习有什么指导性的作用吗?
- 第十章 输入/输出:对于输出不是有System.out.printfln()等方式吗,为什么输出也要设置对象?
- 第十一章 线程与并行API:并行API是什么?
- 第十二章 Lambda:Lambda是什么?
- 第十三章 时间与日期:为什么Java这么强调时间与日期?
- 第十四章 NIO与NIO2:NIO是什么?
- 第十五章 通用API:为什么需要规则表达式?
- 第十六章 整合数据库:为何要使用JDBC架构?
- 第十七章 反射与类加载器:JDK类加载器层级是什么?
- 第十八章 自定义泛型、枚举与注释:为何要自定义泛型、枚举与注释?特别是注释
认真学习教材第一、二章
在学习第一、二章的过程中,我主要是通过自己看书的方式并结合老师的学习指导进行学习,以下是我的一些体会。
第一章
- 了解Java的历史
为什么需要Java程序设计语言?
我个人的理解的是,在当年,当单片机计算系统的出现后,相关领域的部分工作人员马上意识到可以利用其进行嵌入式应用的研发,以提高消费类电子产品的智能化程度。遗憾的是,当时并不存在一门程序语言既可以适应单片机计算系统(不能太庞大复杂)又能支持跨平台的需求,为了满足这些要求,Java的前生Oak语言诞生了。后来随着互联网的发展,需要一种能支持网络传播且支持跨平台的程序,Oak语言恰恰符合这些要求,在一系列的改动下,Oak语言被更名为Java,Java也就由此诞生了!
Java解决了什么问题?
根据Java产生的原因,我认为Java当时主要解决了支持网络传播与跨平台这两个问题。当然随着Java本身的不断改进与科技发展对Java提出的更多的要求,如今的Java具有更加安全、稳定、可移植的特点,可用来开发更多的技术。
- 识记Java的三大平台
Java SE
各应用平台的基础,学习的主要对象
Java EE
以Java SE为基础,定义了一系列的服务或技术
Java ME
Java平台版本中最小的一个,适用于小型数字设备上的研究开发。此项不用学
- Java SE的四个组成部分
JVM,JRE,JDK与Java语言
JVM是Java虚拟机,JRE是Java执行环境。JDK包括Java语言、一些工具程序和JRE,JRE里包括了JVM和Java SE API
学习Java API的重要性
API是一些预先定义好的函数,个人觉得,学习好Java API中的已定义好的函数,在未来编程的过程中如果遇到了能直接调用API中函数的问题,就可以避免自己去写相关的代码了,而且API中的函数一般也会比我自己写的更规范、更安全。
了解JCP与JSR、RI和TCK的关系
JCP是个开放性组织,JSR是个正式文件,RI是免费且开发原始码的参考实现,TCK是测试工具箱。JSR必须通过JCP投票才能通过,JSR成为最终文件前,需要提供RI和JCK。
了解Oracle JDK与OpenJDK的关系
OpenJDK是Oracle JDK的开源版本,而Oracle JDK的部分代码在OpenJDK中会有其他技术进行替代
- 了解Java的学习路径
深入理解JVM/JRE/JDK
JVM是Java程序唯一认识的操作系统,其可执行文件为.class文件
PATH与CLASSPATH:PATH是Windows操作系统的搜索路径,CLASSPATH是JVM操作系统的搜索路径,均可以用SET进行设定
面向对象技术
封装、继承、多态
Java API:从父类学起,注意继承体系
容器:课程后续继续学习,个人目前没什么概念
- 理解JVM是执行Java程序(可执行文件*.class)的操作系统(或容器)
理解JVM是Java实现「一次编译、到处运行」的跨平台的关键
个人的理解是JVM把源代码编译成各个平台都能认识的东西,不同的平台根据自身的特点再对这个东西进行执行,这也就是所谓的跨平台
- JVM负责Java程序的各种资源管理
理解JVM、JRE与JDK的关系
JRE用来部署Java程序,包括Java SE API和JVM
JDK用来开发Java程序,包括Java程序设计语言、JRE和开发工具下载、安装JDK,理解「Public JRE」和「Private JRE」的用途
按照书本的提示,结合第二章的相关内容已经完成了JDK的下载,并实现了第一个Java程序HelloWorld(见下图)


- 思考题
这一节的标题是「Java不只是语言」,学完这节内容后你认为Java还是什么?
我个人的理解是,正如书上所说,Java语言知识Java的其中一个主要部分,在学习Java的时候,我觉得自己不仅要关注Java语言的相关知识,更要学习Java里面提供的各种标准,里面丰富的类库也是我日后学习的一个重要资源
只执行Java程序,不下载JDK可以吗?
个人觉得是没有问题的,JDK包含了JVM和其他一些东西,而如果只是为了执行Java程序的话,直接下载JVM即可,不必下载JDK
第二章
- 从Hello World 开始
运行Hello World程序
已在Windows下运行了此程序,在第一章的第二幅截图中
- 我打算在Window下学习Java开发
理解PATH是用于Windows/Unix/Linux等系统的,找不到javac.exe、java.exe是因为PATH没有设置正确
此问题我在写HelloWorld的时候也遇到了,参照书本介绍的方法在系统高级选项处修改了PATH,之后就OK了
理解CLASSPATH是用于JVM(容器)的,使用javac和java命令找不到XXXX.class是因为CLASSPATH没有设置正确
此问题我也遇到了,参照书本介绍的方法使用参数-classpath即可
- 理解「JVM是Java程序唯一识别的操作系统,对JVM来说,可执行文件就是扩展名为.class的文件」
XXXX.class的路径可以用java -cp或 java -classpath指定,此时就不用设定CLASSPATH环境变量了
个人更倾向用java -cp,比较简洁一些
- 管理源码与二进制文件
- 理解SOURCEPATH和-d的作用,编译带有package语句的Java代码时,必须使用javac -d outpath XXXX.java
- 掌握package和import的使用,会用命令行编译、运行带有package和import语句的Java代码
- 使用IDE
- 会用IDE(IDEA、Netbeans、Eclipse等)编译、运行、调试Java代码
根据老师的推荐使用了IDEA,参考老师的博客,我编译并运行了HelloWorld(见下图)

学会使用java -version和java -verbose XXXXClass诊断问题
附带-version变量可以显示执行的JRE版本,见下图

使用JDK工具程序javap加上-v可确认位码文档的版本号,见下图

另外,可以使用-target指定编译出来的位码必须符合指定平台允许的版本号,使用-source要求编译程序检查使用的语法不超过指定的版本
学习上存在的疑问
通过自己初步的学习,对教材P35页有一处疑问,在Main程序开头输入package cc.openhome表示的意思为什么是将Console类放在cc.openhome包里,而不是将Main类放在cc.openhome包里?

思考题
编译、运行「Hello World」时你遇到了什么问题?怎么解决的?(参考)
主要是在用javac和java命令的时候,系统总是有出错的提示,在上文中有提到。解决办法是参考书本的方法,对PATH进行设置等便可正常运行了
代码托管到git@OSC
参考学长的博客,完成了建立项目以及代码托管等任务,见下图


学习进程

| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 |
| 第一周 | 25/200 | 1 | 15/20 |
20155321 2016-2017-2 《Java程序设计》第一周学习总结的更多相关文章
- 201521044152<java程序设计>第一周学习总结
本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...
- 201621123007 Java程序设计第一周 学习总结
第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第一周学习总结
丁宣元 <面向对象程序设计(java)>第一周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...
- 扎西平措 201571030332《面向对象程序设计 Java 》第一周学习总结
<面向对象程序设计(java)>第一周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 ...
- 201871010135 张玉晶 《面向对象程序设计(java)》 第一周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/wyt0455820/ ...
- 杨其菊201771010134《面向对象程序设计(java)》第一周学习总结
第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com 安迪儿 程序设计评测:https://pintia.cn/ 迷路的麋鹿回不来家了 代码 ...
- 201871010124 王生涛《面向对象程序设计JAVA》第一周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://edu.cnblogs.com/campus/xbsf/ ...
- 201871010126 王亚涛 《面向对象程序设计(java)》 第一周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/wyt0455820/ ...
- 201871010132-张潇潇《面向对象程序设计(java)》第一周学习总结
面向对象程序设计(Java) 博文正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cn ...
随机推荐
- Java.util 包(Date 类、Calendar类、Random类)
java.util 包提供了一些实用的方法和数据结构. Date 类 Date 类表示日期和时间,里面封装了操作日期和时间的方法.Date 类经常用来获取系统当前时间. 构造方法: 构造方法 说明 D ...
- CentOS7中安装VMwareTools
本例中为在Linux(以CentOS 7为例)安装VMware Tools. 1.首先启动CentOS 7,在VMware中点击上方“VM”,点击“Install VMware Tools...”(如 ...
- Java50道经典习题-程序22 递归求阶乘
题目:利用递归方法求5!.分析:递归公式:n*factorial(n-1); public class Prog22 { public static void main(String[] args) ...
- 如何将pip更新到最新版
通过该命令即可达到目的:python -m pip install --upgrade pip pip在Python中是非常常用的,就像node.js里面的npm一样.两者共同的作用是包的管理工具.
- 算法——(5)B/B+/红黑树
1. B树——lgdN B树是平衡多路查找树,主要用于文件系统的索引. 1)定义: 对于一个度数为d的B树, 每个结点最多有d个孩子 如果根结点不是叶子结点,那它至少有两个孩子 每个非叶子结点(非根结 ...
- NPOI下载
.吐槽NPOI下载 众所周知我们用NPOI第三方程序集主要的目的就是为了能快捷的操作Excel,但是现在不论是官网(https://archive.codeplex.com/?p=npoi)还是git ...
- HDU 1142 A Walk Through the Forest(最短路+记忆化搜索)
A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- SPOJ 4487. Can you answer these queries VI splay
题目链接:点击打开链接 题意比較明显,不赘述. 删除时能够把i-1转到根,把i+1转到根下 则i点就在 根右子树 的左子树,且仅仅有i这一个 点 #include<stdio.h> #in ...
- VB.NET & Visual Basic
当看到VB.NET者这本书籍的时候,翻开文件夹唯一的感受就是:这不和VB一样吗?究竟有什么差别呢? 1)版本号: 又一次回想VB,能够发现事实上他是Microsoft退出的基于Windows操作系统环 ...
- 如何设计处优秀的Restful API
只知道遵规循矩的程序员是假程序员,任何技术都是不断发明创造改进的. 如何设计处优秀的Restful API? 盲目跟风,设计糟糕的Resful API = 浪费时间 ! 不啰嗦,直接进入技术主题: ...