20145326蔡馨熠《Java程序设计》第一周学习总结

20145326蔡馨熠 《Java程序设计》第一周学习总结

教材学习内容总结

转眼间新的一学期终于开始了!为什么我这么期待呢?因为这学期可以上娄嘉鹏老师的java程序设计课,我不是什么电脑天才,之前c语言学得也不是特别好。可我就是对hdl和java特别感兴趣(之前在我的问卷调查报告里面提到过),并且寒假的时候在家里也预习了一部分java知识。第一周要求学习两个章节并作心得体会,虽然我早已看过前两章的知识,不过为了进一步巩固,我还是用了星期六一天的时间把第一章和第二章的知识从头到尾仔仔细细的看了一遍,边看边想边体会,不断发现新的问题并解决它,以求进步与提高!(星期六一天,早上八点半开始看书思考到中午12点,吃饭睡觉到下午两点。然后健身洗澡吃饭洗衣服到晚上七点,然后博客从晚上七点一直写到晚上将近12点。虽然用的时间很长,不过我不得不承认这种学习总结的效果真的很好!)

1 java平台概论

要想更好的使用java,首先必须要深入的了解它。所谓工欲善其事,必先利其器。书的第一章就给我们讲述了java的前世今生,在其发展的过程中,其应用领域越来越广,逐渐演变出不同的分支,Sun公司在1999年6月旧金山的Java One大会上公布了新的java体系结构,该结构根据不同级别的应用开发区分了不同的应用版本,它们就是如今的三大平台Java SE、Java EE和Java ME。Java SE是本书介绍的主要对象。Java SE是学习其他平台应用的基础,Java EE则是在SE基础上更进一步,适用于开发分布式、多层次以web为基础的应用程序,Java ME是作为小型数字设备上开发及部署的平台。

2 JVM/JRE/JDK

作为基础的Java SE又可分为四个主要部分:JVM、JRE、JDK和Java语言。为了能够运行Java撰写好的程序,必须有Java虚拟机(JVM)。JVM包括在Java执行环境(JRE)中,所以为了要运行Java程序,必须安装JRE。如果要开发Java程序,必须取得JDK,JDK包括JRE及开发过程中需要的一些开发工具,像是javac、java等工具程序。了解JVM JRE JDK毫无疑问是我们学习过程中必不可少的一部分,JVM就是虚拟机,其作用就好比是一个程序翻译员,将class翻译成机器码,JVM是Java程序唯一认识的操作系统,说白了就是系统自身是无法运行class文件的,有了JVM,class文件才能运行起来,且JVM让Java可以跨平台,每个平台认识的0、1序列并不一样,因此必须使用不同的编译程序为不同的平台编译出可执行的机器码,Java是高级语言,我们的目的是让程序“编译一次,到处执行”。Java并不直接编译为相依于某平台的0、1序列,而是翻译为中介格式的位码。不同的平台必须安装专属该平台的JVM。只有这样才能达到“编译一次,到处执行”的目的。JVM是Java唯一认识的操作系统,位码文档就是JVM的可执行文件。人不在合适环境下就无法生存,java也是这样,JRE就是java执行环境,可提供所需链接库。JDK则提供工具程序,而JDK本身就包括了JRE。总而言之,其三者是一种包含关系,JDK中有JRE,JRE中有JVM。安装好JDK之后,记住该自己设定的变量或选项就要自己设定,JDK不会代劳。至今,JDK已有许多版本,当你想在不同的系统中运行java程序时,只需更改JDK版本即可,这就是大家都说java可以跨平台的原因所在。

3 简单的java程序,hello world

首先要在Windows下设置“显示扩展名”,接着选择一个文件夹来撰写Java原始码文档。再创建一个“文本文件”(也就是.text文件),编好代码后保存,并重新命名为hello world.java。确定更改文字文件的扩展名。注意扩展名必须是.java,主文档名必须与类名称相同。然后再打开DOS命令行,切换目录至刚刚新建的文件夹目录下,逐步操作,最终实现hello world。class是用来定义类的关键词,之后接类名称。public class hello world即表示hello world是它的公开类,一个java文档可以定义多个类,但只可有一个公开类,且公开类名称和主文档名称需要保持一致。之后java程序执行的起点是main()方法,必须写成public static void main(String[] args)的形式。main()表示可以被JVM公开执行,static表示JVM不用生成类实例就可以调用,main()不用传回值,声明为void即可,String[] args可以在执行程序时,取得用户指定的命令行自变量。println()与print()的区别在于输出字符串后换不换行。(前者输出后要换行,后者不换行)

4 path\classpath\sourcepath

path是操作系统中的环境变量,当你输入一个指令而没有指定路径信息时,操作系统会依照PATH环境变量中设定的路径顺序,依次寻找各路径下是否有这个命令。我们可以执行echo %path%来看看目前系统path环境变量中包括哪些路径信息。而设定path有两个方法。一 、SET PATH =" " 二、进入"系统属性"单击"环境变量"找到path直接修改。设定时有多个路径,会使用分号(;)作分隔,通常会将原有path附加在设定值后面,这样寻找其他指令时,才可以利用原有的path信息。设定完成之后,就可以执行javac而不用额外指定路径。建议将JDK的bin路径放在path变量的最前方,是因为系统搜索path路径时,会从最前方开始。

classpath:从一开始就在强调,JVM是Java程序唯一识别的操作系统,对于JVM来说,可执行文件就是扩展名为.class的文档。想在JVM中执行某个可执行文件(.class),就要告诉它到哪些路径下寻找文档,方式是通过classpath指定其可执行文件(.class)的路径信息。classpath和path功能类似,均为指令的执行路径,不同的是path为windows的搜索路径,可执行文件为exe和bat,而classpath是JVM中的搜索路径,使用-classpath为JVM指定可执行文件(.class)的路径信息(也可缩写为-cp),如java -cp C:\workplace helloworld 。 JVM预设的classpath就是读取目前文件夹中的.class。如果想从当前文件夹中开始寻找类文档,则可以使用“.”指定。

sourcepath:为javac指令指定路径,和classpath有一定程度的相似,使用时写成javac -sourcepath src main.java(在当前路径中的src文件夹中寻找main.java并编译成main.class) 在编译时,会先搜索—sourcepath指定的文件夹是不是有使用到的类原始码,然后会搜索classpath中是否有已编译的类位码。确认原始码与位码搜索路径之后,接着检查classpath是否已经有编译完成的Main类。如果存在且从上次编译后,Main类的原始码并没有改变,则无需重新编译,如果不存在,则重新编译main类。

5 package 这是一种分门别类管理类的方式,可以解决文件覆盖的问题。.java放在src文件夹中,编译出来的.class放置在class文件夹下。使用时,即在java文档的最上方添加相应语句,如书上package cc.openhome,相应main类必须放置在当前的cc/openhome文件夹中, package所定义名称与class所定义名称,会结合而成类的完全吻合名称,原始码文档要放置在与package所定义名称层级相同的文件夹层级中。由于console类使用package定义在cc.openhome.until包下,所以console.java必须放在src文件夹中的cc\openhome\until文件夹,且在没有工具辅助下,必须手动建立文件夹。在原始码中指定使用某个类时,如果是相同包中的类,只要使用class所定义的名称即可,而不同包的类,必须使用完全吻合名称。在编译时,若有使用-d指定位码的存放位置,就会自动建立对应包层级的文件夹,并将编译出来的位码文档放置至应有的位置。

6 import 注意import只是告诉编译程序,遇到不认识的类名称,可以尝试使用import过的名称,import让你少打一些字,让编译程序为你多做一些事。不过偷懒是有限度的,(书上有例子)有时候必须要自己明确的逐字打出来。

7.IDE —target —source 简单地说,IDE可以代劳我们做一些原始码文档与位码文档等资源管理工作,提升我们的效率。书上主要选取的是NetBeans IDE进行介绍。NetBeans可以切换至“文件”窗口直接查看实际文档管理,且如果我们要使用NetBeans执行程序进入main()的类,可直接右击Main.java文件,在弹出的快捷菜单中选择“运行文件”命令,会有个“输出”窗格显示执行结果。这比我们使用DOS命令行方便多了。对于一些编译错误,它也可以提醒我们,很人性化。我们还可以在NetBeans中切换JDK版本。用—verbose可以确认位码文档的版本号。在编译的时候,可以使用-target指定编译出来的位码,必须符合指定平台所允许的版本号,使用—source要求编译程序检查使用的语法,不超过指定的版本。JDK8默认的-target与—source都是1.8,—target在指定时,值必须大于或等于—source。

教材学习中的问题和解决过程

在刚开始的学习过程中,书中会经常使用如cd\或者cd..之类的DOS命令,刚开始阅读时会有许多不懂,不过通过观看视频资料以及阅读娄老师相应的博客时,问题就迎刃而解了。还有就是关于容器。容器是说比如有很多个不同的容器,一些特定的不同的东西只能放入对应的容器中,并且遵循各自的管理,每个不同的小容器又在一个大容器中,是JVM里吗?我感觉容器就是一种java应用程序,书上说是应用程序沟通、协调相关资源的系统。然后是在学习到classpath和sourcepath时,一直疑惑同样作为指定路径的两者之间有何区别,最终通过观察书中其他的编译发现,classpath是找位码(.class)文件,sourcepath是找原始码(.java)文件,使用classpath时,一般为java -cp ……使用sourcepath时,一般为javac -sourcepath……两者所指定的文件是不同的。关于IDE,目前还不是很熟练,不过我真的被它所吸引,它大大简化了我们的java操作流程,更直观,更简便。

代码调试中的问题和解决过程

(我觉得还是这个最有意思)

使用Console类编写helloworld(使用其他类链接库练习)

代码: public class main{ public static void main(String[] args) { Console.writeLine("hello world"); } }

我以为电脑中本身是自带Console类文件的,但是实际上并没有,所以我自己写了一个Console.java

public class Console{
public  static void writeLine(String text)
{ System.out.println(text);}
{

因为我是将Console类和main类都放在c盘中的java文件夹中,所以在编译时只需要进入到java文件夹下直接执行java main就好了。但是如果没有把Console类和main类放在一起的话,就需要为JVM指定classpath。

其他(感悟、思考等,可选)

我感觉学习java时,书本理论知识和实践操作是缺一不可同时也是不可混作一谈的,“纸上得来终觉浅,绝知此事要躬行”的道理就是如此,对于程序类的课程,掌握了一定理论后,多练多动手才是王道。理论与实践相结合,不断发现问题,不断克服,才能不断进步!我记得在第一章的学习过程中,书上明显写着公开类名称必须要和主文档名称一致,当时看书时以为牢牢记住了,觉得很简单。可是在实际操作时候还是会犯错误,可见实践操作经验之重要! 在编写java文档的时候,也容易错误的将大小写搞混,还有空格的问题。最终发现编程工作真的是一个极其细致的工作,看书会了,并不代表动手就会,希望在今后,多动手练习,不偷懒,不怕麻烦,理论与实践相结合,能养成细致和检查的习惯,一点一滴积累。 Maybe I am a slow walker,but I never walk back! !

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时  
第一周 200/200 2/2
20/20

 
第二周 300/500 2/4 18/38  
第三周 500/1000 3/7 22/60  
第四周 300/1300 2/9 30/90  

参考资料

时间: 2024-10-23 17:18:20

20145326蔡馨熠《Java程序设计》第一周学习总结的相关文章

20145326蔡馨熠《信息安全系统设计》第2周学习总结

20145326蔡馨熠<信息安全系统设计>第2周学习总结 教材学习内容总结 一.计算机系统与链接 信息就是位+上下文,都是由一串位表示的,区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文.ASCII字符构成的文件是文本文件,所有其他文件都是二进制文件. 文件是字节序列 Hello程序的生命周期从高级C语言程序开始,每条C语句被转化为一系列“低级机器语言”指令,然后这些指令按照“可执行目标程序”的格式打包,并以二进制磁盘文件的形式存放起来,目标程序也称为“可执行目标文件”. 源文件到目

20145326蔡馨熠《信息安全系统设计基础》第11周学习总结

20145326蔡馨熠<信息安全系统设计基础>第11周学习总结 教材内容总结 异常控制流(ECF)发生在计算机系统的各个层次,是计算机系统中提供并发的基本机制.在硬件层,异常是由处理器中的事件触发的控制流中的突变.控制流传递给一个软件处理程序,该处理程序进行一些处理,然后返回控制给被中断的控制流. 有四种不同类型的异常:中断.故障.终止和陷阱.当一个外部旧设备,例如定时器芯片或者一个磁盘控制器,设置了处理器芯片上的中断引脚时(对于任意指令)中断会异步地发生控制返回到故障指令后面的那条指令. 一

20145326蔡馨熠《信息安全系统设计基础》第12周学习总结

20145326蔡馨熠<信息安全系统设计基础>第12周学习总结 教材学习内容总结 第九周学习内容总结 第十周学习内容总结 第十一周学习内容总结 视频学习与实践 指针与声明 C语言中变量的声明包括两个部分: 类型 声明符 对于简单类型,声明并不会对代码产生多大的阅读障碍,而对于复杂类型的识别,可以采用右左右左法进行判断. 指针数组.数组指针.指针函数.函数指针的区别 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的

20145326蔡馨熠 实验三 &quot;敏捷开发与XP实践&quot;

20145326蔡馨熠 实验三 "敏捷开发与XP实践" 程序设计过程 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 一.git上传代码 首先我通过git上传一个名为“shiyansan”的代码. 设置权限: 然后我的partner从网上把这个文档下载到他的电脑中. 然后再修改,再上传: 我的partner:-  [20145211黄志远开源托管代码](https://git.oschina.net/nostalgia_) 二.敏捷开发与XP 软件工程是把

20145221高其&amp;20145326蔡馨熠《信息安全系统设计基础》实验二 固件设计

20145221高其&20145326蔡馨熠<信息安全系统设计基础>实验二 固件设计 实验目的与要求 了解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux 环境下串行程序设计的基本方法. 掌握终端的主要属性及设置方法,熟悉终端I /O 函数的使用.学习使用多线程来完成串口的收发处理. 熟悉linux开发环境,学会基于S3C2410的linux开发环境的配置和使用.使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的

20145326蔡馨熠《网络对抗》——恶意代码分析

20145326蔡馨熠<网络对抗>--恶意代码分析 1.实验后回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什么方法来监控.. 需要监控什么? 系统中各种程序.文件的行为. 还需要注意是否会出现权限更改的行为. 注册表. 是否有可疑进程. 如果有网络连接的情况,需要注意这个过程中的IP地址与端口. 用什么来监控? 最先想到的肯定是使用wireshark抓包了,再进行进一步分析. Sysinternals

20145326蔡馨熠《信息安全系统设计》第7周学习总结

教材学习内容总结 在简单模型中,存储器系统是一个线性的字节数组,而cpu能够在一个常数时间内访问每个存储器位置.实际上,存储器系统是一个具有不同容量.成本和访问时间的存储设备的层次结构.书上有的内容我就不重复赘述了,只需要将部分重要的知识点归纳总结一下. 存储技术 静态RAM(SRAM):用来作为高速缓存存储器,每个位存储在一个双稳态的存储器单元里.双稳态就是说电路可以无限期的保持在两个不同的电压配置或者状态之一.只要供电,就会保持不变.即使有干扰,例如电子噪音来扰乱电压,当干扰消除后,电路就会

20145326蔡馨熠《信息安全系统设计》第五周学习总结

教材学习内容总结 书上有的内容我就不重复赘述了,只需要将部分重要的知识点归纳总结一下. 1.使用GDB的堆栈跟踪功能(GDB中有很多针对调用堆栈的命令,都需要一个目标栈帧,例如打印局部变量值的命令) 在栈帧之间切换 frame args 将当前栈帧设置为args(编号或Address)指定的栈帧,并打印该栈帧的简要信息. up n 向上回退n个栈帧(更外层),n默认为1. down n 向下前进n个栈帧(更内层),n默认为1. 打印栈帧信息(不移动栈帧) frame 打印当前栈帧的简要信息. i

20145326蔡馨熠《信息安全系统设计基础》第三周学习总结

教材学习内容总结 书上有的内容我就不重复赘述了,只需要将部分重要的知识点归纳总结一下. 1.进制 二进制.八进制.十进制.十六进制(转换:以二进制作为中间变量) 2.字 每台计算机都有一个字长,指明整数和指针数据的大小. 虚拟地址是以这样的一个字来编码的,字长决定虚拟地址空间的最大范围. 3.字节顺序 小端法——在存储器中按照从最低有效字节到最高有效字节的顺序存储对象. 大端法——从最高有效字节到最低有效字节的顺序存储. 4.布尔代数 (1)二进制值是计算机编码.存储.操作信息的核心(0.1),