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 ...
随机推荐
- Production-Ready Beanstalkd with Laravel 4 Queues
原文地址:http://fideloper.com/ubuntu-beanstalkd-and-laravel4 Note: TL;DR version at the bottom! Queues a ...
- Angular2 Pipe
AngularJs 1.x 中使用filters来帮助我们转换templates中的输出,但在Angular2中使用的是pipes,以下展示Angular 1.x and Angular 2中filt ...
- CSS样式命名规则
1.样式命名外 套: wrap主导航: mainnav子导航: subnav页 脚: footer整个页面: content页 眉: header页 脚: footer商 标: label标 题: t ...
- InputStream TO byte
public class ByteToInputStream { public static final InputStream byte2Input(byte[] buf) { return new ...
- 图论——最短路径 Dijkstra算法、Floyd算法
1.弗洛伊德算法(Floyd) 弗洛伊算法核心就是三重循环,M [ j ] [ k ] 表示从 j 到 k 的路径,而 i 表示当前 j 到 k 可以借助的点:红色部分表示,如果 j 到 i ,i 到 ...
- 【jQuery】deferred对象了解
deferred对象就是jQuery的回调函数解决方案,在英语中,defer的意思是"延迟",所以deferred对象的含义就是"延迟"到未来某个点再执行. 它 ...
- 7、Dubbo-配置(2)
重试次数 通常配合timeout超时设置进行配置 <dubbo:reference "> </dubbo:reference> <dubbo:service i ...
- Owin+ASP.NET Identity浅析系列(一)用户登录注册
在今天,读书有时是件“麻烦”事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的…… 使用VS2015创建MVC项 ...
- Controller如何写的更简化
Controller层相当于MVC中的C,也是安卓或者前端请求的接口. 首先说Controller为什么需要写的更加简化? 第一.Controller是不能复用的: 第二.即便是将Controller ...
- svn .externals 属性
问:如下自定下载关联模块呢? 答:第一步: 编辑svn.externals文本,如下所示 dir/moduel_name URL/module dir/moduel_name URL/module 第 ...