20202315 实验一《Linux基础与Java开发环境》实验报告
##20202315 2021-2022-1 《数据结构与面向对象程序设计》实验一报告
课程:《数据结构与面向对象程序设计》
班级: 2023
姓名: 王梦欣
学号:20202315
实验教师:王志强
实验日期:2020年9月16日
必修/选修: 必修
# # 1.实验内容
- 基于命令行进行简单的Java程序编辑、编译、运行和调试。
- 练习Linux基本命令;
- 学习Java程序的JDB调试技能:https://www.cnblogs.com/rocedu/p/6371262.html
- 编写简单的Java程序。
# # 2. 实验过程及结果
一、基于命令行进行简单的Java程序编辑、编译、运行和调试。
1.Linux命令行及vim基本操作
(1)文件目录:cd Java 进入 'Java' 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd - 返回上次所在的目录 ls 查看目录中的文件
mkdir dir1 创建一个叫做 'dir1' 的目录 mkdir dir1 dir2 同时创建两个目录
rm -f file1 删除一个叫做 'file1' 的文件' rmdir dir1 删除一个叫做 'dir1' 的目录'
rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容 rm -rf dir1 dir2 同时删除两个目录及它们的内容
cp file1 file2 复制一个文件 cp dir/* . 复制一个目录下的所有文件到当前工作目录
cp -a /tmp/dir1 . 复制一个目录到当前工作目录 cp -a dir1 dir2 复制一个目录
(2) 文件搜索:
find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
find / -user user1 搜索属于用户 'user1' 的文件和目录
find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
(3)vim的基本操作:
三种模式的切换:Esc进入普通模式 i 进入插入模式 :进入命令行模式
普通模式:
x/Delete 删除游标所在字符
X 删除游标所在前一个字符
dd 删除整行
dw 删除一个单词(不适用中文)
d$/D删除至行尾
d^删除至行首
dG删除到文档结尾处
d1G删至文档首部
在动作前输入数字会使它重复那么多次:
如:输入2w使光标向前移动两个单词,输入3e使光标向前移动至第三个单词的末尾,
输入0(数字零)移动光标到行首。
在正常模式下修改命令的格式:operator 【number】motion
optrator:操作符,代表要做的事情。
motion:动作
插入模式:
"i" 在光标所在位置插入字符
"I" 在光标所在行的行首插入字符
"o" 在光标所在行的下一行新行插入字符
"O" 在光标所在行的上以行新行插入
"s" 删除光标所在字符并插入字符
"S" 删除光标所在行并插入字符
"a" 光标所在字符的下一个字符插入
"A" 光标所在行的行尾插入字符
“cw” 替换从光标所在位置后到一个单词结尾的字符
命令行模式:
:进入命令模式,输入w回车,保存文档。输入:w<filename>可以将文档另存为其他文件名或存到其他路径下。
:q! 强制退出,不保存
:q 退出
:wq! 强制保存并退出(可能会丢失东西)
:w<文件路径> 另存为
:saveas文件路径 另存为
:x和:wq 保存并退出
更多的vim的基本操作可以使用命令vimtutor在终端打开学习教程
2.Java程序操作
(1)界面一:创建一个新file(输入命令vi+文件名),之后进行编辑,使用vim的一些基本操作命令
(2)界面二:进行Linux操作,使用命令 “javac+程序名”对新写的程序进行编译
(3)界面三:当系统报错使用界面三进行调试,可以利用JDB和GDB等调试工具。
(4)调试完成后,进入界面二,使用命令“java+程序名”运行程序
2.练习Linux基本命令
(1)sudo
需要根权限的每一个命令都需要sudo命令,sudo命令可以帮助获取根权限。
(2)ls(list)
借助list命令,终端就会显示你正在处理的那个目录里面的所有文件和文件夹。
假设我在/home文件夹里面,想查看/home里面的目录和文件。就可以使用命令:/home$ ls
(3)cd
更改目录(cd)是始终在终端中使用的主要命令。使用该命令时,只要输入你想要从当前目录进入到的那个文件夹的名称。
如果想要返回上一级,可以将双圆点(..)作为参数。如:cd .. 返回上一级目录 cd ../.. 返回上两级目录
(4)mkdir
创建一个新的文件夹或子文件夹,可以使用mkdir命令来做到这一点。使用格式为 mkdir+文件夹名称。
(5)cp
使用cp可以从终端拷贝粘贴文件。首先,你确定想要拷贝的那个文件,然后输入目的地位置,即可粘贴文件。即 cp+文件名+目的地位置。
cp也可以用来拷贝整个目录,不过需要加参数-r,即 cp+-r+目录名+目的地位置。
(6)rm
rm这个命令可以移除文件。如果文件需要根权限才能移除,可以使用参数-f,-f就是直接强行删除,不做任何提示的意思。
rm还可以移除整个文件夹,需要使用参数-rf,-r就是向下递归,不管有多少级目录,一并删除。
(7)apt-get
主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统
(8)find和grep
find 命令用来在指定目录下查找文件,任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。
grep命令用来查找一个忘记确切路径或者文件名文件,使用该命令查找文件里符合条件的字符串,即根据给定关键字帮助找到文件。
(9)tree
Linux下用tree命令列出树形图。
(10)git
Linux git命令是文字模式下的文件管理员,git是用来管理文件的程序。
3.学习Java程序的JDB调试技能:https://www.cnblogs.com/rocedu/p/6371262.html
准备阶段:
Linux Bash下打开三个标签页:一个使用vim编辑代码;一个使用javac, java编译运行代码;一个使用JDB调试代码。
快捷键:Ctrl+Shift+T
:打开标签 Alt+数字n:进入第n个标签页
过程:
在第一个标签页编辑完代码后使用:w进行保存,然后切换到第二个标签页使用javac进行编译,注意加上参数-g。
设置断点:方法断点(stop in) 行断点(stop at) 条件断点 临时断点(help可以查看命令列表)
jdb 文件名 对其进行调试 run使程序运行 next使程序运行至下一行
4.编写简单的Java程序
hello.world
加减运算法则
猜数字
5.上传码云
一开始的错误操作:
成功上传:
## 3. 实验过程中遇到的问题和解决过程
- 问题1:操作过程中对Linux命令及vim的基本操作不甚熟悉
- 问题1解决方案:遇到遗忘的就去查询,多次查询,多次记忆。
- 问题2:对于调试过程不大清楚,掌握不好
- 问题2解决方案:反复尝试,多次调试解决。
- 问题3:一开始没有按需类型导入,导致程序一直无法运行
- 问题3解决方案:对比了书上的程序之后,进行了搜索学习,然后掌握。
- 问题4:使用git上传码云,开始一直搞不明白
- 问题4解决方案:查阅了很多资料
## 其他(感悟、思考等)
Java是一个比较严谨的语言,很多细节需要注意,也有很多需要多多记忆、多多练习的地方。Linux操作系统比较繁琐,他不像集成开发环境那样“智能”,但是更可以锻炼写程序的人的能力,可以让人学习到更多
## 参考资料
- [《Java程序设计与数据结构教程(第二版)》](https://book.douban.com/subject/26851579/)
- [《Java程序设计与数据结构教程(第二版)》学习指导](http://www.cnblogs.com/rocedu/p/5182332.html