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 ...
随机推荐
- 【OpenCV】透视变换矫正
演示结果参考: 功能实现:运行程序,会显示图片的尺寸,按回车键后,依次点击需矫正的图片的左上.右上.左下.右下角,并能显示其坐标,结果弹出矫正后的图片,如图上的PIC2对话框.可以继续选择图片四个点进 ...
- 数据类型.md
数据类型 整型 数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3个字 ...
- Java并发案例05---Master-Worker模式
Master-Worker 模式是常用的并行计算模式.它的核心思想是系统由两类进程协同工作,Master和Worker进程.Master负责接收和分配任务,Worker负责处理子任务.当各个Worke ...
- php filesize() 方法返回的文件大小异常
问题描述:需要生成一个 700k 大小左右的文件,相关代码如下: <?php $handle = fopen('./split.log', 'a+'); $result = 0; while( ...
- 3、Spring Cloud - Eureka(构建服务端/客户端)
3.1.Eureka简介 3.1.1.什么是 Eureka 和Consul.Zookeeper 类似, Eureka 是一个用于服务注册和发现的组件,最开始主要应用 于亚马逊公司旗下的云计算服务平台 ...
- 404 Note Found 队-Alpha10
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...
- HTML+JS实现视频上传显示进度条
示例代码: css部分: #content{border: 1px solid saddlebrown;padding: 16px;border-radius: 2px} .list {top: 15 ...
- MongoDB常用指令
db 查看当前操作的数据库 show dbs 显示所有数据库 show collections 显示当前数据库下的所有集合 use database_name 连接到一个名叫[database_nam ...
- 求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N! N阶阶乘求和算法 JAVA C Python
一行代码算出1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N! N阶阶乘求和 时间复杂度为O(n) 空间复杂度为O(1) 对于任意正整数N 求1!-N!一行算出和给定求1 ...
- TestNG+Maven+IDEA 自动化测试(一) 环境搭建
示例代码: https://github.com/ryan255/TestNG-Demo 所需环境: 1. IDEA UItimate 2. JDK 3. Maven 创建工程 一开始创建一个普通的m ...